← lf.wtf
FRMT app icon

FRMT

Film Simulation for iPhone

Not a filter.
A film.

Every other film app on your phone is a colour filter. A list of what each colour should become, applied to a photo that has already been taken.

FRMT simulates the film instead. The light scattering sideways through the emulsion. The dye layers chemically holding each other back. The grain forming only where light actually landed. Your iPhone runs the chemistry, one frame at a time, from a RAW negative.

Download on the App Store $14.99 once

No subscription · No account · Nothing leaves your phone

A lit castle keep above a moat at dusk, as the iPhone renders it. The same frame developed through the Cinnabar 50 profile: the lit walls and the towers bloom into the dark around them. iPhone Cinnabar 50
Same frame, same exposure. Drag it.

The difference

A filter is a list. Film is a reaction.

A filter works by lookup. Somebody decided in advance what every colour should turn into, and the app swaps them one pixel at a time. Feed it the same blue twice and you get the same answer twice, whether that blue was an inch of evening sky or the highlight on a chrome bumper.

Film has no list to consult. It has chemistry, and chemistry pays attention to its surroundings. Light that hits a bright edge keeps going, bounces off the back of the film and comes back to expose the grains beside it. Dye forming in one layer releases a chemical that stops the layer next to it forming as strongly. Grain appears where enough photons happened to land, which is not the same place in the shadows as in the midtones.

None of that can be written down as a list, because the answer depends on what else is in the frame.

That is the whole reason a neon sign on film glows into the dark around it, why reds stay separate from greens instead of turning to mud, and why grain sits heaviest in the midtones and vanishes in deep shadow. It is what people are pointing at when they say a photograph looks like film. A lookup table cannot get there, no matter how carefully it was made.

The proof

We built the filter, then beat it.

One photograph, developed twice. On the left, the best possible colour filter of this exact film stock, built from the same measurements we built the model from. On the right, the full simulation. This is a 1:1 crop, so you are looking at real pixels rather than a resized version of them.

A 1:1 crop of bright sky seen through dark autumn branches, developed through a colour lookup table: clean, smooth, edges cut hard against the sky. The identical crop through the full FRMT simulation: grain across the sky, and the bright sky blooming into every dark branch and leaf. Filter FRMT
Drag it. The sky picks up grain, and every dark branch gets eaten into by the light behind it. The filter cuts hard against the sky because a filter has no way to move light sideways. Flint 64.

Zoom back out and it is everywhere. Here is every place the two versions disagree across the whole frame, amplified and shown on its own. This is the light a filter cannot produce, because producing it means moving light across the frame rather than recolouring it in place.

A dark field showing only the difference between the two versions: warm light tracing every lit leaf, branch and edge in the frame.
The gap between a filter and a film, isolated. One real frame.

Three things a filter cannot do

What your phone is actually calculating.

Every photograph goes through these in order, the same order a negative goes through them, on the graphics processor in your phone.

01 · Halation Light goes in, and comes back out beside itself. Some light passes clean through the emulsion, reflects off the base underneath, and exposes the film a second time next to where it entered. Bright things do not stop at their edges. They bleed into what surrounds them. You notice it in: neon, streetlights, windows, sun through leaves.
02 · Interimage effects The colour layers argue with each other. As dye develops in one layer it releases a chemical that drifts sideways and holds back its neighbours. This is most of what gives a stock its colour signature, and it is why a red stays red when it sits against a green instead of both sliding toward brown. You notice it in: foliage, skin against colour, anything saturated.
03 · Grain Not a texture laid on top. Grain here is the actual variation in how much dye formed, spot by spot, so it follows the tones instead of sitting over them. Strongest through the midtones, almost gone in deep shadow, and it moves when your exposure moves. You notice it in: skies, skin, flat walls, anywhere a fake grain layer looks pasted on.

Halation, on its own

This is real, and it is in every frame.

The returning light from a single photograph, pulled out and amplified so you can see it. Nothing here was painted on. It is what the model produced from the negative.

A false-colour field showing only the returning light in one photograph: warm outlines tracing every bright edge of a castle at night.

Four stocks

Measured, not styled.

The numbers behind each one come off its manufacturer's own published datasheet: the response curves, the spectral sensitivity, the grain figures. Nobody sat down and eyeballed a preset until it looked about right.

You load one at a time, the way you load a roll. There is no look picker on the capture screen and there are no sliders, and none of the four is a variation on another.

Cinnabar 50Punchy and saturated. Landscape, foliage, sunsets.
Galena 100Neutral and even. Travel, streets, mixed light.
Baryta 100Soft and fine-grained. People, portraits, overcast days.
Flint 64Grainy and warm with cool shadows. Street, hard light, neon.

How it works

A camera, not a control panel.

  1. Press the shutter. A RAW negative is written immediately. The shutter never waits on processing, so the app stays as fast as the stock camera.
  2. It goes on the roll. Frames queue up exactly like exposures on a roll of film. Keep shooting. You can also set developing to hold until you are plugged in.
  3. It develops. About a minute a frame, on your phone, running the full model from negative to print. You watch the timer, not a progress bar pretending to be one.
  4. You get it back. Finished photographs save to your photo library and stay in the app, so you can look through them without leaving. Shot something on another camera? Import the RAW and develop that too.
A developed photograph of a bird on a rock above turquoise water. A filter and film comparison of backlit leaves, magnified. One scene developed through all four film stocks. The capture screen: viewfinder, exposure and zoom wheels, shutter. The roll: frames waiting to develop above a grid of finished photographs.

Honestly

It is slow, and that is the trade.

A minute of your phone's graphics processor per photograph is an absurd amount of computation to spend on one image, and it is the reason nobody else does this. A filter is one lookup per pixel and it is done before you lift your thumb. We think the minute buys something a lookup never will.

The viewfinder shows you the scene, not the film. Grading a live preview means guessing at the answer before the work is done, and a preview that guesses wrong is worse than one that is honest. Use the exposure dial to place your highlights.

This is slide film. There is not much room above the highlights. That is faithful rather than accidental, and it is the part that will change how you shoot.

One price, once

$14.99. That is the whole business model.

No subscription, no account, no cloud, no ads, no watermark, no in app purchases, no upsell to unlock the good stocks. Your photographs never leave your phone, because the app has no networking code in it at all.

Requires an iPhone that can capture Apple ProRAW.

Download on the App Store $14.99 once

Questions

The things people ask first.

How is FRMT different from a film filter or a LUT?

A filter is a lookup table. Somebody decided in advance what every colour becomes, and the same input always gives the same output. FRMT simulates the process instead, so what happens to a pixel depends on what surrounds it: light spreads sideways into neighbouring areas, dye layers hold each other back, and grain forms according to how much light actually landed.

Which film stocks are included?

Four, each built from its manufacturer's published characteristic curves and spectral sensitivity data rather than eyeballed from somebody's scans.

Is it a subscription?

No. One purchase of $14.99. No subscription, no account, no advertising, no in app purchases.

Do my photos leave my iPhone?

No. Every frame is developed on the iPhone's own GPU. The app contains no networking code at all, so there is nothing to upload and no server holding a copy.

Why does developing take so long?

Because it runs the chemistry rather than looking up an answer. Light transport through the emulsion, the interaction between dye layers and grain formation are all computed for every frame, and that costs real time on a phone.

Which iPhones does it work on?

Any iPhone that can capture Apple ProRAW, running iOS 26 or later.