The filter: sepia() function applies a warm, brownish yellow tone to an element that mimics the aged appearance of sepia toned photographs from early photographic processes.
Loading Filter Effects Builder…
Live preview of sepia() from warm tint to full vintage tone
Combine sepia with brightness and contrast for retro photo stacks
Preview partial sepia for warm colour palettes
Copy the complete filter stack with one click
Drop the Filter Effects Builder into any page — blog post, product docs, intranet, school portal — with a single line of HTML. Your visitors get the full tool, processed entirely in their browser. No backend, no uploads, no signup.
Embed code
<iframe
src="https://www.fixtools.io/css-tool/filter-effects-builder?embed=1"
width="100%"
height="780"
frameborder="0"
style="border:0;border-radius:16px;max-width:900px;"
title="Filter Effects Builder by FixTools"
loading="lazy"
allow="clipboard-write"
></iframe>Attribution-friendly: a small "Powered by FixTools" link appears in the embed footer.
The sepia() function converts element pixel colours using a fixed matrix that maps them toward a warm brownish yellow tone derived from the W3C Filter Effects Level 1 specification. At sepia(1), the transformation is complete: all colours become variations of a single warm brown hue, and the result looks broadly similar regardless of the original image colours because chromatic information is overwritten by the sepia matrix while only the original luminance survives to determine which sepia shade each pixel receives. At sepia(0), the element is unchanged. At sepia(0.4), the original colours remain partially visible but with a warm cast layered over them, reducing the blue and cyan components while lifting the red and yellow channels in a controlled, mathematically predictable way that is identical across every modern browser engine.
Combining sepia() with brightness() and contrast() produces recognisable vintage photographic styles that would otherwise require dedicated photo editing software to reproduce. The faded print look sepia(0.5) brightness(1.1) contrast(0.85) adds warmth while lifting overall exposure and slightly reducing contrast, mimicking a print that has been left in light for years. The darkroom developed look sepia(0.8) brightness(0.95) contrast(1.1) is richer and more saturated in the brown tones, similar in feel to a freshly developed darkroom print on warm paper. The hand tinted look sepia(0.3) saturate(0.8) brightness(1.05) preserves enough original colour for the image to read as slightly desaturated and warm rather than fully monochromatic. Each of these requires tuning multiple values simultaneously, which is the primary benefit of the visual builder over hand editing CSS.
Partial sepia values between 0.1 and 0.4 are useful as a subtle warm cast for photographs on warm themed websites without the full vintage effect. A travel blog or lifestyle site might apply sepia(0.15) to all photography as a consistent warm treatment that ties images together visually across content from many contributors. This approach is less processing intensive than running all images through photo editing software and is easy to remove or adjust by changing a single CSS rule in the shared stylesheet. For UI components like icons or illustrations, full sepia(1) combined with brightness() adjustments can recolour monochromatic black or white assets to a warm amber tone that fits brand palettes built around earth tones, copper, rust, and aged paper colours without needing duplicate asset variants per palette.
Sepia interacts with other filter functions in order dependent ways that matter when building complex stacks. Placing sepia() before saturate() in the filter list applies sepia first and then reduces the saturation of the already brown toned pixels, producing a muted brown image. Placing saturate() before sepia() desaturates the original colours first and then applies sepia to the desaturated result, which produces a slightly different brown distribution because the sepia matrix receives lower chroma input. The visual builder lets you reorder functions by drag and compare both renderings side by side, which is significantly faster than rewriting the order in CSS and reloading the page. For most vintage looks, the order brightness, contrast, sepia, saturate produces consistent results across diverse photographic source content.
Drag the sepia slider from 0 toward 1 to add warm brown tones. Add brightness(1.05) and contrast(0.9) to the stack for a classic faded-vintage look. Adjust each value individually until the combination produces the retro aesthetic you want.
Step-by-step guide to css sepia filter generator:
Add sepia() to the filter builder
Select the sepia function from the function panel using the Add Filter dropdown. The preview begins at value 0 with the element rendering in its original colours. Drag the slider rightward to apply warm brown toning and observe the smooth transition from full original colour through partial sepia and into the full monochromatic brown rendering as the value approaches 1.
Set the sepia intensity
Choose a value between 0.1 and 0.4 for a subtle warm cast that retains original colour identity, 0.5 to 0.7 for a clearly vintage look that still preserves some original chroma, or 1 for full sepia monochrome where every pixel adopts a variation of the warm brown matrix output. Type an exact decimal in the field if you have a precise target.
Add brightness and contrast to the stack
For a faded vintage look, add brightness(1.1) and contrast(0.85) to the filter stack alongside sepia. For a rich darkroom developed look, add brightness(0.95) and contrast(1.1). Adjust each function independently in the preview to find the combined feel you want, and reorder the stack by drag to compare different processing orders.
Copy and paste the filter stack
Click Copy CSS to grab the complete filter declaration with every stacked function in the current order. Paste it into your stylesheet on the target element or component class. Pair with transition: filter 0.4s ease in the base rule so any hover or class toggle that changes the filter value animates smoothly rather than snapping between states abruptly.
Common situations where this approach makes a real difference:
Travel blog consistent warm photography treatment
A travel blog receives photography from multiple contributors with varied white balance and colour temperature, ranging from cool overcast scenes to warm tropical sunsets. A developer applies filter: sepia(0.18) brightness(1.03) to all article images via a shared .post-image class. The subtle sepia and slight brightness lift ties images together visually with a warm, sun soaked aesthetic that matches the brand without making any image look overly processed or stuck in a vintage mood. The generator confirms the chosen values look correct across a representative sample of real submissions before the rule is rolled out to the production stylesheet.
Vintage-style landing page hero image
A heritage food brand wants their hero photography to look like vintage recipe card photographs from the 1970s with a warm faded character that supports the brand storytelling. A developer uses the generator to build filter: sepia(0.7) brightness(1.08) contrast(0.88) saturate(0.9) on the .hero-img class. The combination produces a warm, slightly faded, muted look that reads as authentically vintage without straying into pastiche territory or making product details unreadable. The generator speeds up finding these four values by previewing them interactively against the actual hero photograph and adjacent supporting imagery in the landing page composition.
Hover de-sepia reveal on archival image grid
A historical archive website shows document scans and old photographs with filter: sepia(1) at rest to match the visual context of historical content and unify the gallery look across heterogeneous source material. On hover, the filter transitions to sepia(0) over 0.4s ease, revealing the original scan colours which include faded ink, paper tones, and the actual condition of the historical material. The transition communicates to visitors that the original document is preserved in full colour and that the sepia treatment is purely a presentation choice. The builder helps the developer pick a hover duration that feels deliberate and respectful rather than flashy.
Icon recolouring to brand amber using sepia and brightness
A developer uses a set of free black SVG icons that need to match a brand palette built around amber and warm earth tones for a new product launch. Rather than recreating each icon in a different colour by hand or commissioning a design refresh, they apply filter: sepia(1) brightness(0.82) hue-rotate(5deg) to the shared .icon class. The combination converts black to a specific warm amber that matches the brand colour reference closely enough to use in production. The generator previews the combination and the developer iterates the brightness and hue-rotate values until the rendered amber matches the Figma colour swatch on screen, finalising the rule in minutes.
Get better results with these expert suggestions:
sepia() cannot target specific colour ranges
The sepia() function applies a fixed matrix to all pixels uniformly with no awareness of luminance regions or local image content. Unlike photo editing tools that can apply warm tones selectively to shadows or highlights through tonal curves or masking, CSS sepia() affects every pixel equally and cannot be limited to a specific luminance band. For selective tonal adjustments, SVG feColorMatrix filters or CSS gradient overlays with blend modes offer more control at the cost of added complexity and an extra DOM node. The simplicity of sepia() is its strength for whole image treatments, and it is rarely worth swapping it for SVG primitives unless the design specifically requires region targeted toning.
Layer sepia with a linear-gradient overlay for split toning
To create a split tone look with warm shadows and cooler highlights, apply filter: sepia(0.6) to the image and then place a linear gradient from rgba(100,80,200,0.2) to rgba(255,200,100,0.2) as an absolutely positioned overlay with mix-blend-mode: screen. The gradient overlay adds cool tones to lighter areas and warm tones to darker areas, producing a split tone effect that CSS filter alone cannot achieve because filter functions operate uniformly across the entire pixel buffer. This combination is popular in cinematic colour grading references and works well for hero photography that needs a distinctive editorial style without resorting to per image processing in a photo editor.
Test sepia on both warm and cool source images
Sepia applied to a photograph with cool blue tones produces a noticeably different result than sepia on a warm sunset photograph even though both end up warm brown, because the transition from the original cool palette to warm is more dramatic and tends to flatten more detail. Preview your sepia filter on the full range of actual images in your content library, not just a single test image, to confirm the effect reads consistently across the variety of source material your CMS publishes. Pay particular attention to portraits and skin tones, which respond differently to sepia than landscape or product imagery and can look unflattering at higher intensities.
Use sepia(1) plus brightness to recolour white UI elements to cream or amber
A white background element with filter: sepia(1) brightness(1.1) becomes a warm cream that suits parchment style backgrounds. brightness(0.85) produces a medium amber suitable for badges, callout panels, or hero overlays. This technique converts white filled SVG or HTML elements to warm tones for designs using earth tone palettes without creating separate coloured asset variants per palette swatch, and it scales to large icon sets where producing variants by hand would be tedious. The values are easy to tune in the FixTools builder before committing them to the production stylesheet.
Use partial sepia for a consistent warm site palette
Applying filter: sepia(0.15) to all images on a warm-branded site ties photography together with a subtle warm cast. The value is low enough that original colours remain clearly visible while the warmth reads as an intentional stylistic choice rather than a processing artefact.
Add hue-rotate(5deg) to shift sepia warmth
The sepia tone matrix produces a fixed warm brown. Adding hue-rotate(5deg) to the filter stack shifts the brown slightly warmer (red direction) or hue-rotate(-10deg) shifts it cooler. This lets you adjust the sepia tone away from its default colour when it conflicts with your brand palette.
Combine sepia(1) with a specific brightness for icon recolouring
To recolour a black SVG icon to a warm amber tone, apply filter: sepia(1) brightness(0.8). The sepia converts the black to dark brown and the brightness reduction pushes it toward a deeper amber. Adjust brightness between 0.6 and 1.1 to target different amber tones.
More use-case guides for the same tool:
Other tools you might find useful:
Open the full Filter Effects Builder — free, no account needed, works on any device.
Open Filter Effects Builder →Free · No account needed · Works on any device