Mad Potato Studios


it takes a long time to become more subtle


Support the making of "Whispers of the sun"

MOOD BOARD
Whispers of the Sun mood board cover
The Power of Nature
Natural Elements Survive
The Magical Realism of Nature
Olive's Sterile World
Olive's Sterile Confinement
The Calculated Doctor
Olive's Inner State
The Battle Between Control and Freedom
Joe and Olive
The Power of the Sun
Intimate Lighting
COLOUR PALETTE
Whispers of the Sun colour palette cover
World of Control
World of Growth
Moment of Escape
Joe's Passionate Rebellion
Olive's Innocent Rebellion
(() => { const decks = document.querySelectorAll('.whispers-deck'); decks.forEach(deck => { const cards = [...deck.querySelectorAll('.deck-card')]; const hitArea = deck.querySelector('.deck-hit-area'); let activeIndex = 0; let dragging = false; let dragMoved = false; let startY = 0; let startIndex = 0; /* =================================== SET CARD POSITIONS =================================== */ cards.forEach((card, index) => { card.style.setProperty( '--index', index ); }); /* =================================== CALCULATE PEEK SIZE =================================== */ function calculatePeek() { const styles = getComputedStyle(deck); const stackDepth = parseFloat( styles.getPropertyValue( '--stack-depth' ) ); const peek = cards.length > 1 ? stackDepth / (cards.length - 1) : 0; deck.style.setProperty( '--peek', `${peek}px` ); } calculatePeek(); /* =================================== ACTIVATE CARD =================================== */ function activate(index) { index = Math.max( 0, Math.min( cards.length - 1, index ) ); activeIndex = index; cards.forEach( (card, cardIndex) => { card.classList.toggle( 'active', cardIndex === activeIndex ); } ); } /* =================================== DESKTOP HOVER =================================== */ hitArea.addEventListener( 'mousemove', event => { const canHover = window.matchMedia( '(hover: hover)' ).matches; if (!canHover) return; const rect = deck.getBoundingClientRect(); const imageHeight = deck.clientWidth * 9 / 16; const y = event.clientY - rect.top; const peek = parseFloat( getComputedStyle(deck) .getPropertyValue('--peek') ); if ( y < imageHeight - peek ) { return; } let index = Math.floor( ( y - (imageHeight - peek) ) / peek ); index = Math.max( 0, Math.min( cards.length - 1, index ) ); activate(index); } ); /* =================================== DESKTOP CLICK =================================== */ hitArea.addEventListener( 'click', () => { const canHover = window.matchMedia( '(hover: hover)' ).matches; if (!canHover) return; window.location.href = deck.dataset.href; } ); /* =================================== MOBILE PRESS + DRAG =================================== */ hitArea.addEventListener( 'pointerdown', event => { if (event.pointerType === 'mouse') return; dragging = true; dragMoved = false; startY = event.clientY; startIndex = activeIndex; hitArea.setPointerCapture( event.pointerId ); } ); hitArea.addEventListener( 'pointermove', event => { if (!dragging) return; if (event.pointerType === 'mouse') return; const difference = event.clientY - startY; const step = 28; if ( Math.abs(difference) > 6 ) { dragMoved = true; } const change = Math.round( difference / step ); activate( startIndex + change ); } ); /* =================================== MOBILE RELEASE =================================== */ hitArea.addEventListener( 'pointerup', event => { if (event.pointerType === 'mouse') return; if (!dragging) return; dragging = false; try { hitArea.releasePointerCapture( event.pointerId ); } catch (error) {} if (!dragMoved) { window.location.href = deck.dataset.href; } } ); hitArea.addEventListener( 'pointercancel', () => { dragging = false; } ); /* =================================== KEYBOARD =================================== */ deck.addEventListener( 'keydown', event => { if ( event.key === 'Enter' || event.key === ' ' ) { event.preventDefault(); window.location.href = deck.dataset.href; } } ); /* =================================== RESIZE =================================== */ window.addEventListener( 'resize', calculatePeek ); }); })();

What if the people trying hardest to protect us are the ones causing the greatest harm?

This is a film about childhood, fear, friendship, and the courage to question the people we trust most.

We don't believe films are made by directors alone. If Whispers of the Sun speaks to you, we'd love to invite you to help bring it to life.

FILM FUNDING
£4,500raised of £7,132
(() => { const script = document.currentScript; const tracker = script.parentElement.querySelector( '.funding-tracker' ); if (!tracker) return; const raised = Number( tracker.dataset.raised ) || 0; const goal = Number( tracker.dataset.goal ) || 7132; const safeRaised = Math.max( 0, raised ); const percentage = Math.min( 100, Math.round( (safeRaised / goal) * 100 ) ); const remaining = Math.max( 0, goal - safeRaised ); const currency = value => new Intl.NumberFormat( 'en-GB', { style: 'currency', currency: 'GBP', maximumFractionDigits: 0 } ).format(value); const raisedElement = tracker.querySelector( '.raised-amount' ); const goalElement = tracker.querySelector( '.funding-goal' ); const percentageElement = tracker.querySelector( '.funding-percent' ); const remainingElement = tracker.querySelector( '.funding-remaining' ); const fill = tracker.querySelector( '.funding-fill' ); const bar = tracker.querySelector( '.funding-bar' ); raisedElement.textContent = currency( safeRaised ); goalElement.textContent = `raised of ${currency(goal)}`; percentageElement.textContent = `${percentage}%`; remainingElement.textContent = remaining > 0 ? `${currency(remaining)} remaining` : 'Goal reached'; bar.setAttribute( 'aria-valuemax', String(goal) ); bar.setAttribute( 'aria-valuenow', String(safeRaised) ); window.requestAnimationFrame( () => { fill.style.width = `${percentage}%`; } ); })();

Retirement Bonus poster
RELEASE 2026  •  7:52
Watch Film
(() => { const originalScript = document.currentScript; const embed = originalScript.closest('.embed') || originalScript.parentElement; const preview = embed?.querySelector('.film-preview'); if (!preview) return; const iframe = preview.querySelector('.film-video'); const soundButton = preview.querySelector('.sound-toggle'); const mutedIcon = preview.querySelector('.sound-icon-muted'); const unmutedIcon = preview.querySelector('.sound-icon-unmuted'); let player = null; let isMuted = true; let isPlaying = false; let resetTimer = null; let mobileObserver = null; const isDesktop = () => window.matchMedia( '(hover: hover) and (pointer: fine) and (min-width: 901px)' ).matches; const isMobileLike = () => window.matchMedia( '(pointer: coarse), (hover: none), (max-width: 900px)' ).matches; const loadVimeoSDK = () => { if (window.Vimeo?.Player) { return Promise.resolve(); } return new Promise((resolve, reject) => { const existing = document.querySelector( 'script[src="https://player.vimeo.com/api/player.js"]' ); if (existing) { if (window.Vimeo?.Player) { resolve(); return; } existing.addEventListener( 'load', resolve, { once: true } ); existing.addEventListener( 'error', reject, { once: true } ); return; } const sdk = document.createElement('script'); sdk.src = 'https://player.vimeo.com/api/player.js'; sdk.onload = resolve; sdk.onerror = reject; document.head.appendChild(sdk); }); }; const updateSoundButton = () => { mutedIcon.classList.toggle( 'is-visible', isMuted ); unmutedIcon.classList.toggle( 'is-visible', !isMuted ); const label = isMuted ? 'Unmute trailer' : 'Mute trailer'; soundButton.setAttribute( 'aria-label', label ); soundButton.setAttribute( 'title', label ); }; const stopOtherPreviews = () => { document .querySelectorAll( '.film-preview.is-playing' ) .forEach(otherPreview => { if (otherPreview === preview) { return; } otherPreview.classList.remove( 'is-playing' ); const otherIframe = otherPreview.querySelector( '.film-video' ); if ( otherIframe && window.Vimeo?.Player ) { const otherPlayer = new Vimeo.Player(otherIframe); otherPlayer.pause().catch(() => {}); otherPlayer .setCurrentTime(0) .catch(() => {}); } }); }; const playPreview = async ({ useSavedSound = false } = {}) => { if (!player || isPlaying) return; if (resetTimer) { window.clearTimeout(resetTimer); resetTimer = null; } stopOtherPreviews(); const savedSound = sessionStorage.getItem( 'filmPreviewSound' ) === 'on'; isMuted = !(useSavedSound && savedSound); try { await player.setMuted(isMuted); await player.play(); isPlaying = true; preview.classList.add( 'is-playing' ); updateSoundButton(); } catch (error) { try { isMuted = true; await player.setMuted(true); await player.play(); isPlaying = true; preview.classList.add( 'is-playing' ); updateSoundButton(); } catch (secondError) { isPlaying = false; console.log( 'Vimeo preview could not play.', secondError ); } } }; const stopPreview = () => { if (!player) return; preview.classList.remove( 'is-playing' ); isPlaying = false; if (resetTimer) { window.clearTimeout(resetTimer); } resetTimer = window.setTimeout(async () => { try { await player.pause(); await player.setCurrentTime(0); } catch { /* Vimeo may not yet be seekable. */ } resetTimer = null; }, 320); }; const setupDesktopBehaviour = () => { preview.addEventListener( 'mouseenter', () => { if (!isDesktop()) return; playPreview({ useSavedSound: true }); } ); preview.addEventListener( 'mouseleave', event => { if (!isDesktop()) return; if ( event.relatedTarget && preview.contains( event.relatedTarget ) ) { return; } stopPreview(); } ); }; const setupMobileAutoplay = () => { if (!('IntersectionObserver' in window)) { return; } mobileObserver = new IntersectionObserver( entries => { entries.forEach(entry => { if (!isMobileLike()) return; if ( entry.isIntersecting && entry.intersectionRatio >= 0.45 ) { playPreview({ useSavedSound: false }); } else if ( !entry.isIntersecting || entry.intersectionRatio <= 0.15 ) { stopPreview(); } }); }, { root: null, rootMargin: '0px', threshold: [ 0, 0.15, 0.3, 0.45, 0.65, 1 ] } ); mobileObserver.observe(preview); }; soundButton.addEventListener( 'click', async event => { event.preventDefault(); event.stopPropagation(); if (!player) return; isMuted = !isMuted; try { await player.setMuted(isMuted); sessionStorage.setItem( 'filmPreviewSound', isMuted ? 'off' : 'on' ); updateSoundButton(); if (!isPlaying) { await player.play(); isPlaying = true; preview.classList.add( 'is-playing' ); } } catch (error) { isMuted = true; await player .setMuted(true) .catch(() => {}); updateSoundButton(); console.log( 'Vimeo sound could not be changed.', error ); } } ); preview.addEventListener( 'click', event => { if ( event.target.closest( '.sound-toggle' ) ) { event.preventDefault(); } } ); document.addEventListener( 'visibilitychange', () => { if (document.hidden) { stopPreview(); } } ); const initialisePreview = async () => { try { await loadVimeoSDK(); } catch (error) { console.log( 'Vimeo Player SDK failed to load.', error ); return; } player = new Vimeo.Player(iframe); try { await player.ready(); await player.setMuted(true); } catch (error) { console.log( 'Vimeo player could not initialise.', error ); return; } isMuted = true; isPlaying = false; updateSoundButton(); setupDesktopBehaviour(); setupMobileAutoplay(); }; updateSoundButton(); initialisePreview(); })();

Retirement Bonus

Watch Retirement Bonus, our latest short about a footballer's worth after a career ending injury. Available through this exclusive film pack, alongside other production materials. Click below to explore.


Why I Stay In My Bag

Our latest haunting drama, Why I Stay in My Bag, is available through this exclusive pack. Click below to explore the short and the extra materials that come with it.

Why I Stay In My Bag poster
RELEASE 2025  •  7:47
Watch Film
(() => { const originalScript = document.currentScript; const embed = originalScript.closest('.embed') || originalScript.parentElement; const preview = embed?.querySelector('.film-preview'); if (!preview) return; const iframe = preview.querySelector('.film-video'); const soundButton = preview.querySelector('.sound-toggle'); const mutedIcon = preview.querySelector('.sound-icon-muted'); const unmutedIcon = preview.querySelector('.sound-icon-unmuted'); let player = null; let isMuted = true; let isPlaying = false; let resetTimer = null; let mobileObserver = null; const isDesktop = () => window.matchMedia( '(hover: hover) and (pointer: fine) and (min-width: 901px)' ).matches; const isMobileLike = () => window.matchMedia( '(pointer: coarse), (hover: none), (max-width: 900px)' ).matches; const loadVimeoSDK = () => { if (window.Vimeo?.Player) { return Promise.resolve(); } return new Promise((resolve, reject) => { const existing = document.querySelector( 'script[src="https://player.vimeo.com/api/player.js"]' ); if (existing) { if (window.Vimeo?.Player) { resolve(); return; } existing.addEventListener( 'load', resolve, { once: true } ); existing.addEventListener( 'error', reject, { once: true } ); return; } const sdk = document.createElement('script'); sdk.src = 'https://player.vimeo.com/api/player.js'; sdk.onload = resolve; sdk.onerror = reject; document.head.appendChild(sdk); }); }; const updateSoundButton = () => { mutedIcon.classList.toggle( 'is-visible', isMuted ); unmutedIcon.classList.toggle( 'is-visible', !isMuted ); const label = isMuted ? 'Unmute trailer' : 'Mute trailer'; soundButton.setAttribute( 'aria-label', label ); soundButton.setAttribute( 'title', label ); }; const stopOtherPreviews = () => { document .querySelectorAll( '.film-preview.is-playing' ) .forEach(otherPreview => { if (otherPreview === preview) { return; } otherPreview.classList.remove( 'is-playing' ); const otherIframe = otherPreview.querySelector( '.film-video' ); if ( otherIframe && window.Vimeo?.Player ) { const otherPlayer = new Vimeo.Player(otherIframe); otherPlayer.pause().catch(() => {}); otherPlayer .setCurrentTime(0) .catch(() => {}); } }); }; const playPreview = async ({ useSavedSound = false } = {}) => { if (!player || isPlaying) return; if (resetTimer) { window.clearTimeout(resetTimer); resetTimer = null; } stopOtherPreviews(); const savedSound = sessionStorage.getItem( 'filmPreviewSound' ) === 'on'; isMuted = !(useSavedSound && savedSound); try { await player.setMuted(isMuted); await player.play(); isPlaying = true; preview.classList.add( 'is-playing' ); updateSoundButton(); } catch (error) { try { isMuted = true; await player.setMuted(true); await player.play(); isPlaying = true; preview.classList.add( 'is-playing' ); updateSoundButton(); } catch (secondError) { isPlaying = false; console.log( 'Vimeo preview could not play.', secondError ); } } }; const stopPreview = () => { if (!player) return; preview.classList.remove( 'is-playing' ); isPlaying = false; if (resetTimer) { window.clearTimeout(resetTimer); } resetTimer = window.setTimeout(async () => { try { await player.pause(); await player.setCurrentTime(0); } catch { /* Vimeo may not yet be seekable. */ } resetTimer = null; }, 320); }; const setupDesktopBehaviour = () => { preview.addEventListener( 'mouseenter', () => { if (!isDesktop()) return; playPreview({ useSavedSound: true }); } ); preview.addEventListener( 'mouseleave', event => { if (!isDesktop()) return; if ( event.relatedTarget && preview.contains( event.relatedTarget ) ) { return; } stopPreview(); } ); }; const setupMobileAutoplay = () => { if (!('IntersectionObserver' in window)) { return; } mobileObserver = new IntersectionObserver( entries => { entries.forEach(entry => { if (!isMobileLike()) return; if ( entry.isIntersecting && entry.intersectionRatio >= 0.45 ) { playPreview({ useSavedSound: false }); } else if ( !entry.isIntersecting || entry.intersectionRatio <= 0.15 ) { stopPreview(); } }); }, { root: null, rootMargin: '0px', threshold: [ 0, 0.15, 0.3, 0.45, 0.65, 1 ] } ); mobileObserver.observe(preview); }; soundButton.addEventListener( 'click', async event => { event.preventDefault(); event.stopPropagation(); if (!player) return; isMuted = !isMuted; try { await player.setMuted(isMuted); sessionStorage.setItem( 'filmPreviewSound', isMuted ? 'off' : 'on' ); updateSoundButton(); if (!isPlaying) { await player.play(); isPlaying = true; preview.classList.add( 'is-playing' ); } } catch (error) { isMuted = true; await player .setMuted(true) .catch(() => {}); updateSoundButton(); console.log( 'Vimeo sound could not be changed.', error ); } } ); preview.addEventListener( 'click', event => { if ( event.target.closest( '.sound-toggle' ) ) { event.preventDefault(); } } ); document.addEventListener( 'visibilitychange', () => { if (document.hidden) { stopPreview(); } } ); const initialisePreview = async () => { try { await loadVimeoSDK(); } catch (error) { console.log( 'Vimeo Player SDK failed to load.', error ); return; } player = new Vimeo.Player(iframe); try { await player.ready(); await player.setMuted(true); } catch (error) { console.log( 'Vimeo player could not initialise.', error ); return; } isMuted = true; isPlaying = false; updateSoundButton(); setupDesktopBehaviour(); setupMobileAutoplay(); }; updateSoundButton(); initialisePreview(); })();

Possessing My House poster
RELEASE 2025  •  7:30
Watch Film
(() => { const originalScript = document.currentScript; const embed = originalScript.closest('.embed') || originalScript.parentElement; const preview = embed?.querySelector('.film-preview'); if (!preview) return; const iframe = preview.querySelector('.film-video'); const soundButton = preview.querySelector('.sound-toggle'); const mutedIcon = preview.querySelector('.sound-icon-muted'); const unmutedIcon = preview.querySelector('.sound-icon-unmuted'); let player = null; let isMuted = true; let isPlaying = false; let resetTimer = null; let mobileObserver = null; const isDesktop = () => window.matchMedia( '(hover: hover) and (pointer: fine) and (min-width: 901px)' ).matches; const isMobileLike = () => window.matchMedia( '(pointer: coarse), (hover: none), (max-width: 900px)' ).matches; const loadVimeoSDK = () => { if (window.Vimeo?.Player) { return Promise.resolve(); } return new Promise((resolve, reject) => { const existing = document.querySelector( 'script[src="https://player.vimeo.com/api/player.js"]' ); if (existing) { if (window.Vimeo?.Player) { resolve(); return; } existing.addEventListener( 'load', resolve, { once: true } ); existing.addEventListener( 'error', reject, { once: true } ); return; } const sdk = document.createElement('script'); sdk.src = 'https://player.vimeo.com/api/player.js'; sdk.onload = resolve; sdk.onerror = reject; document.head.appendChild(sdk); }); }; const updateSoundButton = () => { mutedIcon.classList.toggle( 'is-visible', isMuted ); unmutedIcon.classList.toggle( 'is-visible', !isMuted ); const label = isMuted ? 'Unmute trailer' : 'Mute trailer'; soundButton.setAttribute( 'aria-label', label ); soundButton.setAttribute( 'title', label ); }; const stopOtherPreviews = () => { document .querySelectorAll( '.film-preview.is-playing' ) .forEach(otherPreview => { if (otherPreview === preview) { return; } otherPreview.classList.remove( 'is-playing' ); const otherIframe = otherPreview.querySelector( '.film-video' ); if ( otherIframe && window.Vimeo?.Player ) { const otherPlayer = new Vimeo.Player(otherIframe); otherPlayer.pause().catch(() => {}); otherPlayer .setCurrentTime(0) .catch(() => {}); } }); }; const playPreview = async ({ useSavedSound = false } = {}) => { if (!player || isPlaying) return; if (resetTimer) { window.clearTimeout(resetTimer); resetTimer = null; } stopOtherPreviews(); const savedSound = sessionStorage.getItem( 'filmPreviewSound' ) === 'on'; isMuted = !(useSavedSound && savedSound); try { await player.setMuted(isMuted); await player.play(); isPlaying = true; preview.classList.add( 'is-playing' ); updateSoundButton(); } catch (error) { try { isMuted = true; await player.setMuted(true); await player.play(); isPlaying = true; preview.classList.add( 'is-playing' ); updateSoundButton(); } catch (secondError) { isPlaying = false; console.log( 'Vimeo preview could not play.', secondError ); } } }; const stopPreview = () => { if (!player) return; preview.classList.remove( 'is-playing' ); isPlaying = false; if (resetTimer) { window.clearTimeout(resetTimer); } resetTimer = window.setTimeout(async () => { try { await player.pause(); await player.setCurrentTime(0); } catch { /* Vimeo may not yet be seekable. */ } resetTimer = null; }, 320); }; const setupDesktopBehaviour = () => { preview.addEventListener( 'mouseenter', () => { if (!isDesktop()) return; playPreview({ useSavedSound: true }); } ); preview.addEventListener( 'mouseleave', event => { if (!isDesktop()) return; if ( event.relatedTarget && preview.contains( event.relatedTarget ) ) { return; } stopPreview(); } ); }; const setupMobileAutoplay = () => { if (!('IntersectionObserver' in window)) { return; } mobileObserver = new IntersectionObserver( entries => { entries.forEach(entry => { if (!isMobileLike()) return; if ( entry.isIntersecting && entry.intersectionRatio >= 0.45 ) { playPreview({ useSavedSound: false }); } else if ( !entry.isIntersecting || entry.intersectionRatio <= 0.15 ) { stopPreview(); } }); }, { root: null, rootMargin: '0px', threshold: [ 0, 0.15, 0.3, 0.45, 0.65, 1 ] } ); mobileObserver.observe(preview); }; soundButton.addEventListener( 'click', async event => { event.preventDefault(); event.stopPropagation(); if (!player) return; isMuted = !isMuted; try { await player.setMuted(isMuted); sessionStorage.setItem( 'filmPreviewSound', isMuted ? 'off' : 'on' ); updateSoundButton(); if (!isPlaying) { await player.play(); isPlaying = true; preview.classList.add( 'is-playing' ); } } catch (error) { isMuted = true; await player .setMuted(true) .catch(() => {}); updateSoundButton(); console.log( 'Vimeo sound could not be changed.', error ); } } ); preview.addEventListener( 'click', event => { if ( event.target.closest( '.sound-toggle' ) ) { event.preventDefault(); } } ); document.addEventListener( 'visibilitychange', () => { if (document.hidden) { stopPreview(); } } ); const initialisePreview = async () => { try { await loadVimeoSDK(); } catch (error) { console.log( 'Vimeo Player SDK failed to load.', error ); return; } player = new Vimeo.Player(iframe); try { await player.ready(); await player.setMuted(true); } catch (error) { console.log( 'Vimeo player could not initialise.', error ); return; } isMuted = true; isPlaying = false; updateSoundButton(); setupDesktopBehaviour(); setupMobileAutoplay(); }; updateSoundButton(); initialisePreview(); })();

Possessing My House

Watch Possessing My House, our surreal short, available through this exclusive pack and select UK festivals. Click below to explore the film and the accompanied exclusive content.


All of our shorts

Here you'll find our free to watch short films. A growing playlist of stories: awkward, tender, and sometimes absurd. Follow the link to our YouTube channel.


How we make them

Follow our journey from script to screen. Here you can see how we actually make the films, and how each one informs the next, through our choices, failures, and successes.


About Mad Potato Studios


The People

Astijus - Founder of Mad Potato Studios

I’m a London based independent filmmaker with big dreams and an ever expanding list of stories I hope to tell. Through Mad Potato Studios, I hope to turn the way I see this strange and wonderful world into short films that others can connect to. At the moment I’m the only member of the studio, but over time I hope it grows into a collective of like minded creatives.


Mad Potato Studios

Mad Potato Studios was founded on the idea that thought provoking, artistic films should be easy to access. Our mission is to create shorts that unsettle comfort zones and linger like a screenworm long after the credits roll.


Supporting the Work

All support goes directly into the next production, from lights, sound, and video equipment to props and paying cast and crew. Up to now every film has been self funded, but with your help we can grow, sustain the studio, and keep making more ambitious, polished work.


Help Us Make More Potato Films

Independent films take time, energy, and resources. We’re a small studio with big ambitions and strange ideas. Donations help us fund upcoming projects, cover production costs, and keep telling the kinds of stories we hope you love to watch.

If you’d like to support our work directly, you can do so through the link below.

Thank you for believing in us. Your support keeps Mad Potato Studios alive and cooking.

Fresh From the potato


Our curated list of short films has something for every weirdo to enjoy.


If you've ever found it easier to connect with a dog than a human, try

A story about two awkward strangers who let their carefree dogs drag them into something both romantic and raw.


If you've ever been so lonely you thought of filing a complaint against yourself, watch

a short film about a desperate farmer who fakes a police call in hopes of making a friend.


If customer service has ever driven you close to the edge of madness, see

a story about a man's attempt to wrestle back control over his life from the cold hands of a broadband company.


If a little magic has ever helped you get through losing someone, watch

a story about existence, grief, magic, and how it all connects.


If you've ever wanted to teach an internet loudmouth a lesson, discover

a film about a teenage girl's attempt to get rid of an online troll, and what happens when it doesn't go as planned.


If you've ever searched for a reason to live, see

a short film about a boy’s attempt to help his family, which leads instead to an unexpected friendship and hope.

The Potato Process


Here is our production floor, where mistakes and triumphs shape Mad Potato films.


If you think you need money to start, watch

With no crew, no budget, and a child actor, directing, camera, sound, and lights all fell to one pair of hands, leading to bad audio, steep learning curves, and the too late realisation that pre-production matters.


If you think you’ll be able to fix everything by film two, discover

With cast work improving, new challenges arrived: battling light and shadow, choreographing our first fight scene, and learning the hard way that a gaffer was essential.

Retirement Bonus


Watch Retirement Bonus and explore the extras only available here.


Based on a true story, Retirement Bonus explores what happens when a professional football player becomes disposable after a career ending injury. Set as a confrontation between Oscar's desperation and Fred's calculating callousness, the scene unfolds as Oscar gives Fred an ultimatum with an old contract he had signed previously. This film explores themes of responsibility, powerlessness, and the need to survive. If you have enjoyed our previous work you will love this one!


By purchasing this exclusive film pack, you’ll receive the full HD short, the final script, hand drawn storyboard sketches, and a shot list used during production. Available on Gumroad through the link below. Every contribution directly funds the next Mad Potato Studios project.


Credits:Director: Astijus Taujanskas
Producer: Mad Potato Studios
Starring: Nathan Lwanga, David Kay, Mehlayeel Isar, Matt Ackermann, Noah Easton, Elwin Williams
Cinematography: James Stittle
Production Sound: Alec Allcock
Music: Vsevolod Polonsky
Colour: James Stittle
Gaffer: Samuel Hunt
Production assisting: Isabelle Barranco
Runtime: 7:52 min | Released: 2026


Thank you for your time and supporting our work!

Why I Stay In My Bag


Watch Why I Stay in My Bag and explore the extras only available here.


Persecuted by a fear of the outside world, Charlotte clings to her black bag while Ruth, a social worker, tries to protect her daughter Emma. With Ruth's patience running out, she forces Charlotte into one final decision: her child or her obsession.


By purchasing this exclusive film pack, you’ll receive the full HD short, the final script, alternate behind the bag footage, hand drawn storyboard sketches, and a curated set of BTS photos. Available on Gumroad through the link below. Every contribution directly funds the next Mad Potato Studios project.


Credits:Directed by Astijus Taujanskas
Produced by Mad Potato Studios
Starring Katty Bicheno, Charlotte Pledger, Natalia Wojcik
Cinematography by James Stittle
Production Sound by James Lynch
Music by Vsevolod Polonsky
Gaffing by Aslan Ntumba
Production Assisting by Elizabeth O’Rafferty
Runtime: 7:46 min | Released: 2025


Thank you for your time and supporting our work!

Possessing My House

Watch Possessing My House and discover the extras only available here.


Water still clings to Alice as she settles in for a quiet afternoon of reading, until a cheerful couple walks through her front door and begins to move in as if she wasn't there. No one hears her protests, her walls are destroyed, and the life she knew crumbles around her. Suddenly a fateful doorbell brings her long deceased father with a devastating message, which Alice must accept.


This exclusive pack includes the film in HD, the annotated script with references, a gallery of BTS photos, and the original blocking and shot notes used to make the film. Follow the Gumroad link below to purchase. Every purchase directly supports the next Mad Potato Studios project.


Credits:Directed by Astijus Taujanskas
Produced by Mad Potato Studios
Starring Teya Lanett, Adrian Bracken,
Ocean Barrington-Cook, and Jack Frazer
Cinematography by Patricio Pacheco
Production Sound by: Shean Roberts
Music by Alexis Croft
Colour by Idris Shittu
Runtime: 7:30 min | Released: 2025


Your support means the world and helps us keep making films.

Whispers of the Sun Mood Board

Whispers of the Sun Colour Palette