Skip to main content

Font-size Clamp Generator

Create fluid, responsive typography with CSS clamp(). Generate perfectly scaling font sizes that adapt smoothly between any viewport range without media queries.

Quick Presets:

Configure Your Font Size

Generated CSS

font-size: clamp(1rem, -1.5rem + 8vw, 3rem);
How It's Calculated

Formula:

Breakdown:

  • Minimum value: Ensures text never gets smaller than
  • Preferred value: Scales linearly between and viewports
  • Maximum value: Caps text size at

About CSS clamp() for Responsive Typography

The CSS clamp() function revolutionizes responsive typography by enabling fluid font sizes that scale smoothly across all viewport sizes. Unlike traditional approaches using media queries, clamp() provides continuous, linear scaling for a more polished user experience.

How clamp() Works

The clamp() function takes three arguments:

font-size: clamp(minimum, preferred, maximum);

Benefits Over Media Queries

Best Practices

Browser Support

CSS clamp() is supported in all modern browsers (Chrome 79+, Firefox 75+, Safari 13.1+, Edge 79+). For older browsers, consider providing a fallback:

font-size: 18px; /* Fallback */
font-size: clamp(16px, 1rem + 0.5vw, 24px); /* Modern browsers */

Fresh-Squeezed Typography Recipe

Here's our chef's recommended recipe for a perfectly balanced typographic scale using clamp(). This creates smooth, harmonious text sizing across all devices - no artificial sweeteners or media query preservatives needed!

/* Body Text - The foundation of your fresh content */
body {
  font-size: clamp(1rem, 0.875rem + 0.625vw, 1.25rem);
  /* Scales from 16px to 20px */
}

/* Heading 1 - Your headline hero */
h1 {
  font-size: clamp(2rem, 1rem + 5vw, 4rem);
  /* Scales from 32px to 64px */
}

/* Heading 2 - The supporting character */
h2 {
  font-size: clamp(1.5rem, 0.875rem + 3.125vw, 3rem);
  /* Scales from 24px to 48px */
}

/* Heading 3 - Keeps things organized */
h3 {
  font-size: clamp(1.25rem, 0.875rem + 1.875vw, 2rem);
  /* Scales from 20px to 32px */
}

/* Heading 4 - A subtle distinction */
h4 {
  font-size: clamp(1.125rem, 0.9375rem + 0.9375vw, 1.5rem);
  /* Scales from 18px to 24px */
}

/* Heading 5 - Small but mighty */
h5 {
  font-size: clamp(1rem, 0.9375rem + 0.3125vw, 1.125rem);
  /* Scales from 16px to 18px */
}

/* Heading 6 - The fine print with style */
h6 {
  font-size: clamp(0.875rem, 0.8125rem + 0.3125vw, 1rem);
  /* Scales from 14px to 16px */
}

/* Small Text - Perfect for those tiny details */
small {
  font-size: clamp(0.75rem, 0.6875rem + 0.3125vw, 0.875rem);
  /* Scales from 12px to 14px */
}

Pro tip: These values assume a 500px to 900px viewport range (our golden ratio). Adjust the middle value (the one with vw) based on your specific viewport range for the perfect squeeze!

Frequently Asked Questions

What is CSS clamp() function?

The CSS clamp() function is a powerful tool for creating fluid typography that scales smoothly between a minimum and maximum size based on viewport width. It takes three parameters: clamp(minimum, preferred, maximum). The browser automatically calculates the font size based on the viewport width, eliminating the need for multiple media queries.

Why use clamp() for font sizes?

Using clamp() for font sizes provides several benefits:

  • Fluid Typography - Text scales smoothly across all viewport sizes without jarring jumps.
  • Better UX - Users get optimal reading experiences on any device.
  • Less CSS - Replace multiple media queries with a single line of code.
  • Accessibility - Maintains minimum and maximum sizes for readability.
  • Performance - Reduces CSS file size and eliminates layout shifts.
What are the recommended viewport ranges?

The golden pattern we recommend is 500px to 900px, which provides smooth scaling across most common device sizes without extreme variations. This range:

  • Covers the majority of mobile, tablet, and desktop devices
  • Provides balanced, natural-looking font size transitions
  • Avoids overly aggressive scaling that can look awkward

Other common ranges you might consider:

  • Mobile-first: 320px to 768px (for targeting smaller devices specifically)
  • Wide range: 320px to 1440px (creates more dramatic scaling)
What font sizes should I use?

The tool defaults to 16px to 48px, which works well as a starting point for most typography needs. Recommended ranges by element:

  • Body text: 16px-20px
  • Headings (H1): 32px-64px
  • Headings (H2): 24px-48px
  • Headings (H3): 20px-32px
  • Small text: 12px-16px

Always start with at least 16px for minimum font size (web accessibility standard), and adjust based on your design needs.

What units should I use with clamp()?

You can input values in either px (pixels) or rem units, and the tool will automatically convert between them when you switch (assuming 1rem = 16px). The output is always in rem for best accessibility.

  • px (pixels): Easier to visualize and work with if you think in absolute sizes
  • rem: Relative to root font size, respects user browser preferences

The tool handles the conversion for you, so use whichever unit feels more natural for your workflow.

Can I use this for other CSS properties?

Yes! While this tool is optimized for font sizes, the clamp() function works with any CSS property that accepts length values: padding, margin, width, height, gap, border-radius, etc. The same calculation principles apply - just adjust your min/max values for the property you're targeting.