Summarize this article with:

A 13px margin here, a 15px gap there, a 20px padding somewhere else. That is how most interfaces end up looking inconsistent, and nobody can pinpoint why.

The fix is a spacing rule that the entire team follows. So what is the 8-point grid system, and why do companies like Google, IBM, and Airbnb build their design systems around it?

This article breaks down how the 8px spacing scale works, the difference between hard and soft grid methods, how to set it up in Figma, and where it fits into responsive layouts. You will also learn how to apply it to buttons, icons, cards, and typography without overcomplicating your workflow.

What is the 8-Point Grid System

YouTube player

The 8-point grid system is a spatial design method that sizes and spaces every UI element using multiples of 8 pixels. Padding, margins, button heights, icon dimensions, and component spacing all follow increments of 8 (8px, 16px, 24px, 32px, 40px, 48px, and so on).

It exists because screens need math that works everywhere. Most popular screen resolutions divide evenly by 8 on at least one axis, which means your layouts render without half-pixel blurriness on Android, iOS, and desktop displays.

Google Material Design uses this system at its core. Apple’s Human Interface Guidelines reference it too, though less strictly. Figma, Sketch, and Adobe XD all support 8px grid overlays natively.

The real benefit is not pixel perfection for its own sake. It is the removal of guesswork. When your entire team commits to 8px increments, designers stop debating whether a gap should be 13px or 15px. Developers stop measuring screenshots. The design system becomes a shared language.

Took me a while to actually trust it. I kept wanting to nudge things by 5px or 3px to “make it feel right.” But once you commit, your layouts start looking tighter without trying.

How Does the 8-Point Grid System Work

YouTube player

You pick a base unit of 8 pixels and apply it to everything. Every dimension, every gap, every piece of white space follows the same scale.

That is the whole idea. The rest is just applying it consistently across different parts of your interface.

GammaUX notes the 8-point grid became an industry standard between 2017 and 2018, driven by designers like Elliot Dahl and adopted by major companies including Google and IBM.

CompanyDesign SystemGrid Approach
GoogleMaterial Design8dp baseline grid across all products
AirbnbDLS8pt grid, line heights in 1.5 multiples
GitHubPrimer8pt grid, font sizes 12px to 48px
AtlassianAtlassian Design8px base unit, 0px to 80px scale

What Are the Spacing Increments in the 8-Point Grid

The scale runs: 8, 16, 24, 32, 40, 48, 56, 64, and up. Some teams also use 4px as a half-step for very tight situations like the gap between an icon and its label.

Is responsive design still a top priority?

Explore the latest responsive design statistics: adoption rates, performance impact, user behavior, and trends shaping modern websites.

See the Numbers →

Define these values as spacing tokens in your design system. Name them something like xs (8px), s (16px), m (24px), l (32px), xl (40px). Your developers will thank you.

Why this naming matters: The U.S. Web Design System points out that unlimited spacing choices slow down design work and make designer-developer communication unnecessarily granular. Tokens fix that by creating a shared, finite vocabulary.

Salesforce’s Lightning Design System used this exact token approach to maintain consistency across a suite of enterprise apps while cutting duplication and rework across teams.

How Does the 8-Point Grid Apply to Padding and Margins

Set all padding and margin values to multiples of 8. A card might use 16px internal padding with 24px margin between sibling cards.

The law of proximity still applies here. Elements within a group get smaller spacing (8px or 16px), while separate groups get larger spacing (24px, 32px, or more).

The grid gives you the numbers, but Gestalt principles tell you which numbers to pick.

Quick reference for padding decisions:

  • Component-level padding (buttons, inputs, tags): 8px or 16px
  • Card internal padding: 16px or 24px
  • Section gaps between groups: 24px, 32px, or 40px
  • Page-level margins and layout gaps: 48px, 64px, or higher

Atlassian’s spacing documentation confirms that consistent spacing around elements creates semantic meaning, helping users understand which elements are related and which are separate.

How Does the 8-Point Grid Handle Typography and Line Height

Font sizes do not always land on multiples of 8. That is fine. A 14px or 18px font size works perfectly well.

What matters is line height. Set your line heights to multiples of 4 or 8 (20px, 24px, 28px, 32px) so text blocks align with the vertical rhythm of your layout.

Pair a 4-point baseline grid with your 8-point UI grid. This keeps the math clean and your typography scaling predictable across breakpoints.

spec.fm’s original 8-pt grid documentation recommends this exact pairing: the 8pt UI grid handles layout and components, while the 4pt baseline grid manages text rhythm. The two work together without conflict.

Implementation steps:

  1. Set your UI grid to 8px increments in Figma or Sketch
  2. Add a secondary 4px baseline grid for typography
  3. Lock font sizes to whatever reads well (14px, 15px, 18px are all fine)
  4. Force line heights to 4px multiples only (20, 24, 28, 32px)
  5. Check that text block bottoms land on grid lines before handing off

What is the Difference Between Hard Grid and Soft Grid

YouTube player

There are two ways to apply the 8-point grid. Both produce consistent spacing. They just get there differently, and the one you pick depends on how your team works.

Hard GridSoft Grid
How it worksElements snap to a visible system-wide gridSpacing measured manually between elements
Extra layersYes, requires container elementsNo
Best forPrint-influenced workflows, strict spec filesDigital products, responsive layouts
Maps to CSSIndirectlyDirectly

When Should You Use the Hard Grid Method

The hard grid places elements onto a visible, system-wide grid divided into 8px units. Think of it like snapping bricks into place.

You create transparent container elements, group them with your UI components, then snap everything to the grid.

It works well for teams that treat the design file as the source of truth.

The downside: You are managing extra layers in Figma or Sketch, and things get messy in complex layouts. Figma’s Director of Advocacy Tom Lowry points out that hard grids come from print and editorial design, making them less practical for digital work where elements behave differently across browser sizes.

When Should You Use the Soft Grid Method

The soft grid skips the visible grid entirely. Instead, you measure 8px increments between individual elements. No snapping, no extra layers. Just consistent spacing values applied manually.

Most teams prefer this approach. It is faster to mock up, it maps more directly to CSS properties, and it does not fall apart when designing for iOS where system UI elements do not follow an even grid.

The key reason it wins in production:

  • Programming languages do not use a visual grid
  • They use padding and margin values
  • So you might as well design the way your developers build

Figma’s own documentation confirms that soft grids are more practical for digital spaces, where not every element needs to adhere to an underlying grid.

Why Do Most Screen Sizes Work With the 8-Point Grid

Common viewport widths like 320, 360, 375, 414, 768, 1024, 1280, 1440, and 1920 pixels all divide evenly by 8.

This is not a coincidence. Screen manufacturers and platform guidelines have converged around dimensions that play nicely with 8px-based layouts.

Android renders at different pixel densities (1x, 1.5x, 2x, 3x), and 8 multiplied by any of those values stays a whole number. No sub-pixel rendering. No blurry edges on buttons or icons.

Apple’s Retina displays render at 2x and 3x. An 8px element becomes 16px or 24px on-device. Clean math, clean rendering.

Compare that to a 5-point or 10-point system. 5 times 1.5 is 7.5 pixels. That half-pixel creates anti-aliasing artifacts, especially on SVG icons and thin borders.

Android developer documentation confirms that fractional pixel values lead to blurry rendering, particularly for small icons and thin dividers. The 8-point grid avoids this entirely by keeping every value a clean integer across all common density multipliers.

Why this matters in practice:

  • A 1px border on an hdpi screen (1.5x) renders as 1.5px, causing visible blur on non-retina displays
  • Icons designed on half-pixel coordinates produce soft, unfocused edges at 16px sizes
  • 8px multiples stay whole at every standard density: 8×1=8, 8×1.5=12, 8×2=16, 8×3=24

How to Set Up an 8-Point Grid in Figma

YouTube player

Figma has built-in grid support that takes about two minutes to configure. Once set, it applies to every frame you create from that point forward.

How to Configure Column and Row Settings for the 8-Point Grid

Select your frame, open the Layout Grid panel, and add two grids.

First, the column grid:

  • Desktop (1440px frame): 12 columns, 24px gutter, 60px margins
  • Mobile-first (375px frame): 4 columns, 16px gutters, 16px margins

Then, the row grid: Set to 8px with no gutter. This gives you the vertical rhythm lines that keep text and components aligned as you scroll through the layout.

The 8px row grid stays the same regardless of responsive breakpoint. Only the column count and margins change between breakpoints.

How to Define Spacing Variables Using Multiples of 8

Create spacing variables in Figma’s local variables panel. Set up a collection called “Spacing” with these values:

TokenValueCommon Use
space-xs4pxIcon-to-label gap
space-sm8pxInline padding, tight gaps
space-md16pxCard padding, form field gaps
space-lg24pxSection spacing
space-xl32pxComponent group separation
space-2xl40pxLayout section gaps
space-3xl48pxHero and page-level spacing

Apply these variables to auto-layout padding and gap properties. When developers inspect your file, they see named tokens instead of raw pixel values.

Each token maps directly to a CSS custom property, which cuts the back-and-forth between design and dev.

This matters more than it sounds. A Forrester Consulting study commissioned by Figma found that teams using token-driven handoffs in Dev Mode saw a 20% to 30% increase in developer output and saved more than 90 minutes per developer per week.

IBM’s design team found that raw pixel values in Figma files caused constant confusion during handoff, with developers unsure which spacing token to apply when a value was off by even one pixel. Named tokens removed that ambiguity entirely.

How Does the 8-Point Grid System Apply to Responsive Design

YouTube player

The grid does not change across breakpoints. The spacing scale stays the same. What changes is which value from the scale you apply at each screen size.

Mobile web traffic now accounts for over 56% of global web traffic, according to multiple 2024 industry sources. Designing with a consistent spacing system across all screen sizes is not optional at that volume.

How Does the 8-Point Grid Work With a 12-Column Bootstrap Layout

Bootstrap’s 12-column structure uses a default 24px gutter (1.5rem), which is already a multiple of 8. Bootstrap’s own documentation explicitly states this gutter width was chosen to match its padding and margin spacers scale.

Set your container margins to 16px on mobile and 60px on a 1440px desktop frame. The horizontal rhythm aligns with the 8-point spacing scale without any extra work.

Use media queries to swap spacing tokens at each breakpoint rather than writing custom pixel values.

Token swap pattern by breakpoint:

  • Mobile (375px): card padding 16px, section gaps 24px
  • Tablet (768px): card padding 24px, section gaps 32px
  • Desktop (1440px): card padding 24px or 32px, section gaps 48px

Both the mobile and desktop values stay on the grid. You are not changing the system. You are just choosing a different step on the same scale.

How Does the 8-Point Grid Scale Across Mobile, Tablet, and Desktop

On a 375px mobile screen, your content area after 16px margins is 343px. Not divisible by 8. That is fine because the soft grid method does not require the content area itself to land on 8.

It only requires the spacing between elements to follow the scale.

BreakpointTotal WidthMarginsContent AreaDivisible by 8
Mobile375px32px total343pxNo (fine)
Tablet768px128px total640pxYes
Desktop1440px120px total1320pxYes

Tablet layouts at 768px give you a 640px content area (after 64px margin per side), which divides cleanly. Desktop at 1440px with 120px total margin gives you 1320px. Also clean.

The pattern holds across devices because 8px increments scale proportionally with pixel density. A 32px gap on a 1x display becomes 64px on a 2x Retina screen, 96px on a 3x Super Retina display.

No fractional rendering. No blurry edges. The math stays whole at every density level.

What UI Components Work Best With the 8-Point Grid

Buttons, icons, cards, form fields, navigation bars, modals. Pretty much every interface component benefits from 8px sizing. Some fit more naturally than others.

How to Size Buttons Using the 8-Point Grid

Set button heights to multiples of 8.

SizeHeightHorizontal PaddingUse Case
Compact32px16pxDense tables, toolbars
Default40px24pxMost UI contexts
Large48px24pxPrimary CTAs, mobile
Extra large56px32pxHero sections

The 48px minimum touch target for mobile aligns with both Google’s Material Design guidelines (48dp) and WCAG 2.5.8, which was introduced as a Level AA requirement in WCAG 2.2 (October 2023). Research cited by WebAbility shows touch error rates drop from 15% at 24px targets to 3% at 44px+ targets.

Use hover states that do not change the button’s dimensions. A background color shift or subtle shadow works. Avoid growing the button on hover because it breaks the spatial rhythm around it.

How to Size Icons Using the 8-Point Grid

Standard icon sizes: 16px, 24px, 32px, 48px, 64px. All clean multiples of 8.

Lucide’s documentation confirms its icons ship at 24px by default, which drops directly into the grid. Material Symbols and Phosphor follow the same 24px default.

Always frame your icons inside a bounding box that matches the grid, even if the artwork inside is smaller. A 20px icon inside a 24px container keeps alignment consistent across the layout.

For touch interfaces, the visual icon can stay at 24px while the interactive target gets padded out to 48px. Google recommends this pattern explicitly in its Material Design touch target guidance.

How to Size Cards and Containers Using the 8-Point Grid

Cards use 16px or 24px internal padding. The card width flexes with the column grid, but its height is determined by content plus padding, both following 8px increments.

Gap between cards: 16px or 24px.

Card layouts in a grid pattern look significantly better when every gap value comes from the same spacing scale. Projects where cards used 12px gaps in one section and 20px in another look off and feel off. The 8-point system prevents that by removing arbitrary values from the equation entirely.

Card sizing checklist:

  • Internal padding: 16px or 24px
  • Gap between cards: 16px or 24px
  • Card border radius: 8px or 16px (on grid)
  • Image aspect ratios that work: 16:9, 4:3, 1:1 (all relate cleanly to 8px base)

What is the Difference Between the 8-Point Grid and the 4-Point Grid

The 4-point grid uses increments of 4 (4, 8, 12, 16, 20, 24). The 8-point grid uses increments of 8 (8, 16, 24, 32, 40, 48). The 4-point grid gives you more granular control but more decisions to make. The 8-point grid is more restrictive but faster to work with.

GammaUX research notes that the 4-point system has grown in popularity precisely because the 8-point grid proved too rigid for dense interfaces with small elements, icons, and text-heavy environments.

What Are the Limits of the 8-Point Grid for Tight Spacing

The jump from 0px to 8px is sometimes too large.

The gap between a label and its input field, or between an icon and adjacent text, often looks better at 4px. Most teams that use the 8-point grid quietly allow 4px as a half-step for these situations.

Where 4px works better than 8px:

  • Icon-to-label gap inside a button
  • Inline badge spacing next to a username
  • Checkbox-to-text alignment
  • Tag spacing within a multi-select input

When Does a 4-Point Baseline Grid Make More Sense

For typography-heavy interfaces like editorial sites, documentation pages, or reading apps, a 4-point baseline grid gives better control over line height and text spacing.

Pair it with an 8-point UI grid for component sizing. The two systems complement each other.

Tailwind CSS uses a 4px base unit by default, where spacing-1 = 4px, spacing-2 = 8px, and so on. That is technically a 4-point system. But since every even number on Tailwind’s scale is a multiple of 8, the two approaches overlap cleanly. Using Tailwind classes like p-4 (16px), gap-6 (24px), or mt-8 (32px) keeps you on the 8-point grid without thinking about it.

How Does Google Material Design Use the 8-Point Grid

Material Design 3 builds its entire spatial system on a 4px baseline grid with components sized to multiples of 8. Buttons are 40px tall. App bars are 64px. Navigation drawers are 360px wide. Bottom sheets snap to 8px increments.

Material’s density settings (default, comfortable, compact) adjust component heights by 4px steps, but the default sizing stays firmly on the 8-point grid. Material’s own documentation confirms that all components align to an 8dp square baseline grid for mobile, tablet, and desktop, with iconography using a 4dp baseline.

If you are building for Android or using Material components in a web app, the 8-point grid is already baked in. You do not need to set it up separately. Just follow the component specs and the spacing stays consistent.

The IBM Carbon Design System and Ant Design follow the same model. IBM’s Carbon documentation describes the 8px “mini unit” as the geometric foundation of all IBM Design, from typography to columns, icons, and illustrations. It is an industry pattern, not just a Google thing.

Design SystemBase UnitNotable Component Sizes
Material Design 34dp (8dp grid)Button 40dp, App bar 64dp
IBM Carbon8px mini unit16px column padding at all breakpoints
Ant Design8px baseComponent heights in 8px multiples
Atlassian8pxSpace scale 0px to 80px

What Are Common Mistakes When Using the 8-Point Grid

The system is simple. The mistakes are too. Most of them come from applying the grid too rigidly or not rigidly enough.

How Do Borders and Outlines Break the 8-Point Grid

A 1px border adds 2px total to an element’s width and height (1px each side). A button with 8px padding and a 1px border now has 9px of visual spacing on each side.

Two ways to handle it:

  • Subtract from padding: Drop padding to 7px so the total stays at 8px. Looks perfect in the design file but creates confusing rules for developers.
  • Use box-sizing: border-box: The CSS standard solution. MDN documentation confirms that border-box tells the browser to include border and padding within the declared width and height, so your 40px button stays 40px regardless of border width.

The Carbon Design System and other enterprise design systems explicitly address this in their token documentation, noting that border offsets require pre-calculated padding values when using content-box sizing.

Pick one approach and stick with it across your whole component library. Inconsistency between components is worse than either choice.

Why Do Designers Break the Grid for Text Sizes

Because 8, 16, 24, 32 are not great font sizes for body text. Most interfaces use 14px, 15px, or 18px body copy. None of those are multiples of 8.

That is expected and acceptable.

Text rendering depends on anti-aliasing and sub-pixel hinting that makes font sizes behave differently from box dimensions. The grid applies to layout spacing and visual hierarchy, not to the size of every individual letterform.

The rule for type is simpler:

  • Font size: use whatever reads best (14px, 15px, 18px are all fine)
  • Line height: must follow 4px or 8px multiples (20px, 24px, 28px, 32px)
  • Spacing above and below text blocks: back on the 8-point grid

Material Design’s own documentation draws this same line, with type aligning to a 4dp baseline grid while UI components follow the 8dp square grid. The two systems run in parallel, not in conflict.

How Does the 8-Point Grid Improve Designer-Developer Handoff

YouTube player

When a developer inspects a design mockup and every measurement is a multiple of 8, they can build faster and with fewer questions. No more pinging the designer to ask whether a gap is 13px or 14px. It is 16px. Always.

Research from UXPin found that 62% of developers spend too much time redoing designs because of communication breakdowns. A consistent spatial system removes one of the most common sources of that friction.

The grid creates a shared vocabulary. Designers spec components using the same spacing tokens that developers define in CSS custom properties or design token files. A spacing value called space-lg means 24px in both the Figma file and the codebase.

Mark Figueiredo, Sr. UX Team Lead at T. Rowe Price, described the real-world impact of token-based workflows: what used to take days to gather feedback now takes hours, and months were shaved off timelines simply by removing manual redlining and back-and-forth emails.

This speeds up usability testing iterations because changes to spacing do not require conversations about exact pixel values. The team just references the scale.

What the grid actually solves in handoff:

  • Ambiguity gone. Values are always on the scale. No guessing between 13px and 14px.
  • Tokens map to code. A space-md token in Figma becomes --space-md: 16px in CSS with no translation needed.
  • QA gets faster. Developers checking spacing against a known scale spot errors in seconds rather than measuring manually.
  • Updates stay consistent. Changing a token value in one place updates every component that references it, across every screen.

Forrester’s Total Economic Impact study for Figma found that teams using token-driven handoff processes saw a 20-30% increase in developer output and saved more than 90 minutes per developer per week, compared to teams relying on manual annotation and ad-hoc pixel values.

And look, the 8-point grid is not magic. It will not fix bad layouts or unclear hierarchy. But it removes a whole category of low-value decisions from your workflow, and that adds up across hundreds of screens and dozens of sprints.

FAQ on The 8-Point Grid System

What is the 8-point grid system used for?

The 8-point grid system is used to size and space UI elements using multiples of 8 pixels. It applies to padding, margins, component dimensions, and layout gaps. Designers and developers use it to keep interfaces consistent across screen sizes.

Why 8 pixels instead of another number?

Most screen resolutions divide evenly by 8, which prevents sub-pixel rendering and blurry edges. The number 8 also scales cleanly across 1x, 1.5x, 2x, and 3x pixel densities on Android and iOS devices.

What is the difference between a hard grid and a soft grid?

A hard grid snaps elements to a visible 8px grid overlay in tools like Figma or Sketch. A soft grid measures 8px increments between elements without a visible grid. Most teams prefer the soft grid because it maps closer to CSS implementation.

Do font sizes need to follow the 8-point grid?

No. Font sizes like 14px or 18px are fine even though they are not multiples of 8. What should follow the grid is line height and the spacing around text blocks. Set line heights to multiples of 4 or 8.

How do I set up the 8-point grid in Figma?

Add a layout grid to your frame with rows set to 8px and no gutter. Pair it with a 12-column grid using 24px gutters. Save these as a style so every new frame starts with the same spacing structure.

Does Google Material Design use the 8-point grid?

Yes. Material Design 3 builds its spatial system on a 4px baseline with components sized to multiples of 8. Buttons, app bars, navigation drawers, and bottom sheets all follow 8px increments by default.

Can I use 4px spacing within an 8-point grid?

Yes. Most teams allow 4px as a half-step for tight gaps like the space between an icon and its label. The 4px value works as a sub-unit within the 8-point system without breaking the overall spatial rhythm.

How does the 8-point grid work with responsive design?

The spacing scale stays the same across breakpoints. You swap which value from the scale applies at each screen size. A card with 24px padding on desktop might use 16px on mobile. Both values remain on the grid.

What UI components benefit most from the 8-point grid?

Buttons, cards, icons, form fields, modals, and navigation bars all benefit. Component heights like 32px, 40px, or 48px fit the grid naturally. Touch targets at 48px minimum align with both the grid and WCAG accessibility standards.

How does the 8-point grid improve designer-developer handoff?

Developers can predict spacing values without measuring every element. When all gaps, padding, and margins follow 8px increments, there is no guesswork during implementation. Spacing tokens in the design file map directly to CSS custom properties in code.

Conclusion

Understanding what is the 8-point grid system comes down to one idea: remove spacing decisions that do not need to be made. Every pixel value follows the same scale, every component snaps to the same rhythm, every handoff gets easier.

Whether you are working in Figma with spacing variables or writing Tailwind CSS utility classes, the 8px increment keeps your layout grid predictable. It works for atomic design systems and single-page projects alike.

The system is not about rigidity. It is about giving your team a baseline so the real creative decisions, like experience design, content hierarchy, and interaction patterns, get more attention.

Start with the scale. Apply it to padding, margins, and component sizing. Let 4px handle the tight gaps. Build from there.

Author

Bogdan Sandu specializes in web and graphic design, focusing on creating user-friendly websites, innovative UI kits, and unique fonts.Many of his resources are available on various design marketplaces. Over the years, he's worked with a range of clients and contributed to design publications like Designmodo, WebDesignerDepot, and Speckyboy, Slider Revolution among others.