Kinetic UI
Back to Introduction
General

Film Grain Overlay

A performant SVG noise filter for adding analog texture to digital layouts.

Quick Actions
CLI Installation
npx kinetic-ui-cli@latest add film-grain
film-grain

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>
  );
}
Performance Notes
  • Uses CSS hardware acceleration via GPU transform-binds.
  • Damped interpolation minimizes paint-redraw flashes.
  • Tree-shakable import: only compiles elements requested.
Accessibility Notes
  • Full keyboard focus-ring navigation support (`Tab`/`Shift+Tab`).
  • ARIA roles mapped correctly for assistive screen readers.
  • Respects `prefers-reduced-motion` system toggles.