Analog Aesthetics
A performant SVG noise filter that adds tactile texture to digital experiences without heavy image assets.
Overview
Film grain is the hallmark of modern, Awwwards-winning websites. It removes the "sterile" feel of flat digital colors and adds a subtle, tactile warmth.
Instead of loading heavy, repeating PNG or GIF patterns which tank performance and Lighthouse scores, this component generates the noise programmatically using an inline SVG <feTurbulence> filter. It sits securely on top of your app with pointer-events-none so it doesn't block interactions.
Usage
For a full-page overlay, place this inside your main layout.tsx or App.tsx:
import { FilmGrain } from "@/components/creative/film-grain"
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<FilmGrain opacity={0.06} blendMode="overlay" />
{children}
</body>
</html>
)
}
Usage Guide
1. Import the Component
Import the component into your React or Next.js page:
import { FilmGrain } from "@/components/creative/film-grain";
2. Implementation Example
Render the component and customize its behavior by passing props:
import { FilmGrain } from "@/components/creative/film-grain";
export default function Example() {
return (
<div className="w-full flex items-center justify-center p-8">
<FilmGrain
opacity{10}
intensity{10}
blendMode{/* value */}
/>
</div>
);
}