Live at fujilut.vercel.app
Convert Fujifilm X/GFX film simulation recipes into downloadable .cube 3D LUT files and HaldCLUT PNGs.
Paste a recipe from TikTok, Instagram, or a photography forum -- or dial in settings manually -- and download a LUT you can use in Darktable, Lightroom, Capture One, DaVinci Resolve, or any editor that supports .cube or HaldCLUT.
Disclaimer: These are approximations of Fujifilm's proprietary film simulations. Not affiliated with FUJIFILM Corporation.
- 14 Film Simulations -- Classic Neg, Classic Chrome, Velvia, Provia, Astia, Eterna, Nostalgic Neg, Reala Ace, Acros, and more
- Smart Recipe Parser -- Paste recipe text from social media in any format (colon-separated, slash-separated, dash-separated, abbreviated) and it auto-detects all settings
- 10 Built-in Presets -- Kodak Gold look, Portra 400 look, Cinestill 800T look, Tri-X B&W, and more
- Two Export Formats -- .cube (Lightroom, Resolve, Capture One) and HaldCLUT PNG (Darktable, RawTherapee)
- Live Preview -- Before/after comparison with sample images
- Save Your Own Presets -- Saved to localStorage for quick access
cd backend
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
uvicorn main:app --reload --port 8000cd frontend
npm install
npm run devOpen http://localhost:5173. The Vite dev server proxies /api to the backend.
cd backend && source venv/bin/activate
pytest tests/ -v- Recipe Editor -- Pick a film simulation, adjust white balance, tone curves, color, and effects
- Paste Recipe -- Copy a recipe from TikTok/Instagram/forums and paste it. The parser handles formats like:
Classic Neg Color chrome - strong WB - Daylight R+4 B-4 Tone curve H -2 S-2 Color +4 - Presets -- Browse built-in looks or save your own
- Download -- Choose 33x33x33 or 64x64x64 grid, download as .cube or HaldCLUT PNG
| Simulation | Character |
|---|---|
| Classic Neg | Teal shadows, amber highlights, punchy contrast |
| Classic Chrome | Muted documentary look, warm midtones, lifted blacks |
| Provia/Standard | Neutral, balanced reference point |
| Velvia/Vivid | Ultra-vivid saturation, strong contrast |
| Astia/Soft | Soft contrast, flattering skin tones |
| PRO Neg. Std/Hi | Low contrast, muted -- portrait headroom |
| ETERNA/Cinema | Flat cinema look, desaturated, cool shadows |
| ETERNA Bleach Bypass | Harsh contrast, extreme desaturation |
| Nostalgic Neg | Warm amber vintage, high contrast |
| REALA ACE | Accurate natural colors, great skin tones |
| ACROS | Premium B&W, rich tonal range |
| Monochrome | Standard B&W |
| Sepia | Warm-toned B&W |
| Parameter | Range | Notes |
|---|---|---|
| Film Simulation | 14 options | Base color profile |
| White Balance | Mode + R/B shift (-9 to +9) | Color temperature fine-tuning |
| Dynamic Range | DR100 / DR200 / DR400 | Shadow recovery |
| Highlights / Shadows | -2 to +4 | Tone curve adjustment |
| Color | -4 to +4 | Global saturation |
| Color Chrome | Off / Weak / Strong | Saturation rolloff in vivid areas |
| Color Chrome FX Blue | Off / Weak / Strong | Blue-specific rendering |
| Clarity | -5 to +5 | Midtone contrast |
| Grain, Sharpness, NR | Shown in UI | Spatial effects -- cannot be encoded in a LUT |
Every RGB point in the identity LUT grid goes through this chain in order:
- White balance R/B shift (per-channel multiplier in linear space)
- Film simulation (per-channel tone curves + 3x3 color matrix + per-hue HSL shifts + tints)
- Base saturation
- Tone curve highlight/shadow adjustment
- Global color/saturation
- Color Chrome (saturation rolloff)
- Color Chrome FX Blue
- Dynamic Range (shadow lift)
- Clarity (midtone S-curve)
- Clamp to [0.0, 1.0]
All transforms are fully vectorized with NumPy -- no Python loops over pixels.
Film simulation profiles are approximations based on publicly available sample images, community analysis, and documented characteristics. They capture the overall feel of each simulation but will not produce identical results to in-camera processing.
- .cube -- Industry standard 3D LUT. Works in Lightroom, Capture One, DaVinci Resolve, Premiere Pro, Final Cut Pro.
- HaldCLUT PNG -- 512x512 image encoding a 64x64x64 3D LUT. Works in Darktable, RawTherapee, GIMP.
- Backend: Python 3.9+, FastAPI, NumPy, SciPy, Pillow
- Frontend: React 18, Vite, Tailwind CSS
MIT