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

The public engine publishes precompiled kernels automatically when their build inputs change on main. Downloads need no GitHub token or Halide installation. For a CI build, wait for the 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. On iOS, advanced features and the complete stock library require Fotufilm Pro.

Can I author or import custom film stocks?

Yes. Film Workshop allows creating or duplicating film stocks and exporting them as .fotufilmpack bundles. Stocks built from non-redistributable calibration data cannot be shared. 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.

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.