fotufilm

Download the desktop app.

Support

Support

Need a hand? Find help with the app, film packs, and plugins.

Troubleshooting

Quick fixes

A photo or video will not open

Verify the file opens in system Photos or QuickTime Player. Cloud-stored files must finish downloading prior to opening. For video with unverified color tags, set Film → Source → Encoding to match the recorded transfer curve and color space.

An export is slow or does not finish

Full export executes full-precision sensitometric curves and spatial filters. Verify adequate local storage. For video, Faster Export uses accelerated encoding. For high-resolution stills, choose the largest permitted resolution that stays within unified memory constraints.

Camera or Photos access was declined

Open system Settings → Fotufilm and enable Camera or Photos permissions. Camera permission is required for the live viewfinder and physical sensor capture; Photos permission is needed to import and save media.

A custom pack will not import

All included stocks are available without importing a pack. For an optional custom pack, obtain a fresh copy from its author. In Fotufilm, choose File → Import Film Pack… and select the .fotufilmpack file. If it still won’t open, send us the error message and your app version.

A plug-in does not appear in DaVinci Resolve or Final Cut Pro

Run the plug-in installer from the macOS Fotufilm application menu and authenticate with administrator credentials when prompted. Restart the host application. In Final Cut Pro, verify the effect template is listed under Effects → Fotufilm. Consult the Mac license and plug-ins section for further verification steps.

A Resolve control is disabled or grain looks different

Check Stage, Resolved Format and Resolved Medium. Controls are disabled when the selected film, medium or parent setting cannot use them. Custom Mottle requires Full and clump-field grain; Discs requires a silver-image stock and Reference rendering. Small grains still use the clump field. Grain Animation → Frozen keeps the pattern fixed, and New Seed changes it. Render Mode affects both preview and delivery; check Effective Renderer when comparing frames. Existing saved parameter values remain intact when controls are temporarily disabled.

An update fails to download or verify

Select Check for Updates from the application menu to initiate a fresh download. Checksum errors indicate an interrupted or truncated download stream. The downloaded package is identical to the signed release installer.

A source build cannot find matching Apple AOT kernels

Xcode Cloud downloads precompiled device kernels using its configured Contents-read FOTUFILM_AOT_TOKEN. The same credential downloads the pinned host toolchain used to prepare bundled Film grain assets. Wait for the matching Apple AOT releases workflow to publish the tag named in the error, then retry. See the AOT build guide for manual generation and supported platforms. App checkout and Apple signing credentials are separate.

Questions

Common questions

Why does Negative Only look clipped in Resolve?

Negative Only outputs per-layer optical density for a following Print Only node. These values can exceed 1.0, so the viewer can show white areas even though the floating-point data retains detail. Connect the nodes directly with matching film and development settings. Duplicate the Negative Only node and change the duplicate to Print Only to preserve those settings. Set its Timeline Color Space explicitly. Avoid grading, color transforms, resizing or display-range exports between them.

To view a negative image, choose Stage: Full and Output Medium: Negative. Negative Viewing: Light Box keeps the film base's orange, with the lamp set so the clear base sits just under white; Scanner neutralizes it. If clipping remains after Print Only, check its stock first: a different stock reads the densities using different curves and can produce a white or dark frame. Also match the surrounding color transforms to Timeline Color Space: Linear Rec.2020 requires Rec.2020 primaries with Linear gamma, not Rec.2100 ST2084.

The Mac app and both plugins use Fotufilm’s calibrated print models. Output Medium shows each paper or print film’s material name. Update the app and both plugins together, then restart the editor to refresh its menus.

How should I colour grade with Fotufilm in DaVinci Resolve and Final Cut Pro?

The engine decodes the image reaching the node into linear Rec.2020 light with mid-grey at 0.18, exposes the film with that light, develops it through characteristic curves, DIR couplers, halation and grain, and prints or scans the negative onto the selected Output Medium. The node's output is display-referred, with black and white set by the paper or scan, and is encoded back into the space that arrived at the node. Negative films deliver standard dynamic range; only reversal film on Digital Reference keeps light above display white. In a Rec.709 timeline the print is fitted into the Rec.709 gamut without changing luminance.

Work in a log or linear wide-gamut timeline (DaVinci Wide Gamut / Intermediate, ACEScct, ACEScg or linear) rather than Rec.709 or sRGB, which clip at diffuse white and give halation no light above white. The Light & Colour controls (Exposure in stops, white balance, highlights, shadows, saturation, vibrance) act on the scene before the emulsion responds. A stop of Exposure moves the picture along the film's curve as in camera.

Grading after the node regrades a finished print. Host display transforms applied after the node, such as Resolve output tone mapping in a colour-managed project or an ACES output transform, act on top of the print. Turn tone mapping off or convert the print to the output space yourself to keep the paper's curve.

In DaVinci YRGB Color Managed or ACES projects Resolve tags the image and Timeline Color Space: Auto (from host) follows the tag; the Decoded Input line under Input names the space in use. In an unmanaged DaVinci YRGB project Resolve labels the image Raw and the plug-in assumes DaVinci Wide Gamut / Intermediate: add a Color Space Transform to DaVinci Wide Gamut / Intermediate before the node and one from it to the output space after, or set Timeline Color Space to the space that arrives. The plug-in warns when a display-referred setting receives light above white. Use a 32-bit float graph. Grade before the node, not between Negative Only and Print Only nodes.

FxPlug effects in Final Cut Pro receive linear light in the library's primaries, so Timeline Color Space selects primaries only and Auto reads them from the clip; an unnamed space is read as linear Rec.709 and reported on the Status line. Use a Wide Gamut HDR library to keep highlights above white for log or HDR sources. Assign the camera LUT in the clip's Info inspector or in a Custom LUT effect above Fotufilm. Effects apply top to bottom in the Video inspector: place exposure and balance corrections above Fotufilm, and delivery trims below.

Why does grain change with format and output dimensions?

Emulsion grain is modeled with calibrated physical dimensions and density rather than fixed screen-space pixel noise. Smaller negative formats (e.g. 16mm vs 35mm vs 4×5) require higher enlargement ratios, producing coarser apparent grain. Higher-resolution exports resolve grain structure in finer detail. New Grain Pattern rerolls the pseudo-random seed while preserving calibrated spatial variance.

Why does halation exhibit a warm or red fringe?

Halation simulates incident light penetrating emulsion layers and the cellulose acetate or polyester base, reflecting off the antihalation layer or back pressure plate, and exposing sensitive layers a second time. Red wavelengths penetrate deepest with lowest scattering, producing characteristic warm halos around specular edges.

Why are certain controls disabled or hidden?

Fotufilm surfaces only controls that physically evaluate on the active film stock and output medium. For example, Bleach Bypass applies to color negative emulsions; channel contrast match applies to optical prints. All films and tools are available on iOS without a Pro purchase. Hardware-dependent features still require a compatible camera.

What does the Unlicensed tag on iPhone and iPad mean?

It means you are using Fotufilm for free, which is fine: every film, editing tool, RAW import, camera control, and photo and video export works without restrictions. Developed photos and videos carry a small FOTUFILM watermark in the lower-left corner; unchanged originals do not. If you would like to support development, tap the tag, open Settings, or choose Remove Watermark on the export screen, then pick a subscription or a one-time purchase. Either one removes the tag and lets you switch the watermark off on the export screen.

Can I author or import custom film stocks?

Yes. Film Workshop allows creating or duplicating film stocks and exporting them as .fotufilmpack bundles. Film Workshop exports only films you author. The built-in profiles are published as JSON with the engine source under CC BY-SA 4.0. See the custom films guide for pack authoring.

Do photos or video leave the local device?

No. All rendering occurs locally on device GPUs. Fotufilm contains no tracking or analytics libraries. The optional Share Crash Reports setting transmits sanitized callstacks devoid of media, filenames, locations, or persistent hardware identifiers. The Mac app has no activation requests. It may connect to check for updates. Review the Privacy Policy for details.

Contact

Contact support

Email support@fotufilm.com. To expedite diagnosis, include the system and execution details shown here. Do not attach private image or video media.

For the browser demo, use a current browser with WebAssembly enabled. If WebGPU is unavailable, the demo renders on the CPU. EXR files must contain flat, single-part RGB half-float or float channels; deep, multipart and subsampled-channel EXRs are unsupported. Try a smaller image if development takes too long or the tab runs out of memory. Reload the demo after an update if engine files fail to load or the renderer reports an abort. Runtime files are versioned together, and Retry discards failed or aborted instances. Browsers without the required WebAssembly JavaScript Promise Integration features use the CPU film renderer.

GPU preparation starts when the editor opens. The startup bar animates while compilation runs and shows the current preparation stage. It fades out when ready; on a cold device it usually takes a second or two. A step stalled for 90 seconds restarts on the CPU without losing the pending preview. CPU previews remain available during preparation. Unsupported GPUs finish startup using the CPU fallback. Zoomed photo detail updates after movement pauses for 300 ms and renders only the visible region at screen resolution.

RAW import avoids an extra image-engine WASM heap when making the opening preview. If that preview worker stops, the editor resumes in small yielding strips from the decoded pixels instead of requiring another RAW decode. Full-resolution samples remain available for editing and export.

Video editing requires a secure context (HTTPS or localhost), WebCodecs decoding, and a supported input codec. Codec availability depends on the browser, operating system and hardware; a filename extension alone does not establish support. HEVC Main / Main10 4:2:0 has a bundled software fallback that preserves native 8- and 10-bit values. Other unavailable codecs report an error before import. Use a current Chrome, Edge or Safari browser; some browsers can edit frames they cannot play with audio. ProRes and raw cinema codecs require a decoder that exposes their native pixels and are not bundled.

Video export also needs WebCodecs encoding and writable file-system storage. Chrome and Edge can write to a file you choose. Browsers with supported origin-private file-system writes stage a disk file and show a download link. If storage is unavailable or full, free disk space or use a browser with file-system access; the editor does not buffer large exports in RAM. Save the download before dismissing it. Cancel stops rendering and discards incomplete output. If the tab or browser crashes, its staging data may remain; clear this site's stored data in browser settings to reclaim it.

For log footage, select the recorded Input color space. The decoder must expose untouched RGB or YUV planes; formats that cannot be read without a browser color conversion fail explicitly. HDR and log input are developed in floating point, but exported videos are 8-bit SDR. Include audio is enabled by default. If an audio codec cannot be copied or transcoded to the selected format, choose another format or explicitly disable audio.

Email support

Diagnostic details

  1. Device hardware model and operating system version.
  2. Application context: iOS app, macOS app, DaVinci Resolve OFX, or Final Cut Pro FxPlug.
  3. Active film stock, output medium, and modified parameters.
  4. Expected behavior, actual output, and exact error text or system logs.

Load custom pack… imports an optional custom pack from the bottom of the film sidebar. Packs also load in the Fotufilm plugins on the same Mac and user account. Restart Resolve or Final Cut Pro after importing or updating a pack, and keep the plugins updated with the app. Pack updates replace the previous version. If a pack needs a newer Mac app, update Fotufilm and load the pack again.