Atomic Design

A method for building design systems from five levels of interface parts: atoms, molecules, organisms, templates and pages.

11 min read

Reviewed by Ravi SuranaUpdated

Quick answer

~20 sec

Atomic design is a method for building a design system by splitting an interface into five levels: atoms, molecules, organisms, templates and pages. Small parts, such as a label, an input and a button, join into larger parts like a search form. A change to one small part appears everywhere it is used. Brad Frost proposed it in 2013.

011 min

The problem atomic design solves

Picture a subscription app with a search box on three screens: the help page, the account page and the checkout page. Each search box was designed and built as part of its own page. One has a grey button. One has a blue button. One has no label at all. When the brand colour changes, a developer edits three files and still misses a fourth copy in an old settings screen.

This case is illustrative, but the cause behind it is common. Teams plan, design and approve websites one page at a time. The page is the unit the work is scoped in, so each page gets its own copy of the shared parts. Over months, the copies become more and more different. Designers and developers also end up with different names for the same thing, so a request about "the search bar" can mean three different pieces of code.

Brad Frost argued that the page is the wrong unit of work. An interface now has to run on phones, tablets, laptops and large screens, often across several products. What stays the same across all of them is not the page. It is the set of parts the pages are made from. Atomic design gives a team a way to name those parts by size, build each one once, and share one vocabulary between design and code.

022 min

Where atomic design comes from

Brad Frost, a web designer, published atomic design as a blog post on 10 June 2013. While looking for a model for interface parts, Frost kept going back to chemistry. In chemistry, atoms join to form molecules, and molecules join to form larger organisms. Frost took those three names and added two of his own, templates and pages, for the levels where the chemistry comparison stops helping. He also pointed readers to Josh Duck's HTML Periodic Table, which arranges HTML elements the way the periodic table arranges chemical elements.

To use the method in client work, Frost and developer Dave Olsen built Pattern Lab, an open-source tool that assembles small parts into complete pages. Frost later expanded the post into a book, Atomic Design, which can be read in full on its own website.

What atomic design took from Object Oriented CSS

The idea of reusable interface parts did not start with Frost. Nicole Sullivan had presented Object Oriented CSS at the Web Directions North conference in Denver. Her method treated a repeated visual pattern as an object: a self-contained piece of HTML and CSS. Its central rule was that an object should look the same wherever it is placed.

Atomic design depends on that rule. The search form from the subscription app can move from the help page into the site header only if nothing about its look depends on the page around it. When a part's style is written for one location, such as "buttons inside the sidebar", the part cannot be reused. Anything built from it then has to be built again for each new place.

032 min

The five levels of atomic design

Atomic design sorts every part of an interface by its size and by what it contains. Each level is made from parts of the levels below it.

Atoms

Atoms are the smallest parts that still mean something on their own: a label, a text input, a button. Frost also counts less visible things as atoms, such as a colour palette, a font and an animation. An atom on its own is hard to judge. A button with no context does nothing useful yet.

Molecules

Molecules are small groups of atoms that do one job together. In Frost's own example, a label, an input and a button join to make a search form. In the subscription app, this search form is the part that had three versions. Building it as one molecule means one decision about its label, its spacing and its button. Frost links this level to the single responsibility principle from programming: each part should have exactly one job.

Organisms

Organisms are larger sections built from molecules, atoms or other organisms. A site header is the usual case: a logo, a main navigation menu and the search form, placed together. An organism can hold different parts, like that header, or the same part repeated, like a grid of product cards. Most organisms make sense on their own, so they are the level that teams move between pages most often.

Templates

Templates place organisms into a page layout. They show the structure of the content, not the content itself: how long a headline may run, what shape an image takes, which section comes first. At this level the chemistry names end, and Frost switches to words clients already use. The template is also where the visual hierarchy of a screen is decided, because it sets which organism a reader meets first.

Pages

Pages are templates filled with real, representative content. This is where the system is tested. Frost's example is the Time Inc. homepage. Its template set out image sizes and headline lengths, and its page showed what happened when real stories went in. A long real product name, or a search that returns nothing, shows whether the parts above can handle it.

Content designers apply the same levels to words. A button label or an error message is written once, as part of its atom or molecule, so the wording matches on every screen that uses it.

041 min

Why atomic design is not a step-by-step process

The five levels read like a sequence, but Frost says they are not one. Frost wrote that atomic design is not a linear process. It is a way of looking at an interface as one whole and as a collection of parts at once. A designer does not finish every atom before starting the first molecule. They move up and down between the levels as they learn what the product needs.

Back in the subscription app, the team builds the search form molecule and places it in the header organism. Then a real page shows a problem. On a small phone screen, the header has no room for a full-width search form. The fix does not belong on the page. The team goes back to the molecule and adds a compact version that shows only a search icon button. Every page that uses the header gets the fix at the same time.

This movement is the main practical value of the five names. A problem seen on a page is traced down to the smallest part that causes it. The change to that part is then checked again at page level, with real content.

052 min

Atomic design vs. nearby concepts

Because atomic design names parts, people often mix it up with the place those parts are kept, and with an older coding idea that shares its name.

A design system is what a team ends up with: the shared parts, the rules for using them, and the documentation. Atomic design is one method for building and sorting that system. A team can have a design system without ever using the words atom or molecule. A pattern library is narrower again: it is the catalogue where the parts are shown and described. Atomic design is also a specific case of modularity, the general idea of building a system from separate parts that can be swapped. What atomic design adds is a set of levels, so a team can say how big a part is and what it may contain.

ConceptWhat it isHow it relates to atomic design
DesignDesign systemAtomic design is one way to build and sort itWhat it is: The full set of shared parts, rules and documentation
Not in the library yetPattern libraryIt is where atoms, molecules and organisms are keptWhat it is: The catalogue that shows and documents each part
EngineeringModularityAtomic design applies it to interfaces, with five levelsWhat it is: The general principle of building from separate parts
Not in the library yetAtomic CSSA coding rule, with no levels and no larger partsWhat it is: A way of writing CSS with one style per class

Atomic design is not atomic CSS

The similar names cause a real mix-up. In October 2013, four months after Frost's post, Thierry Koblentz published an article in Smashing Magazine called "Challenging CSS Best Practices". He argued that each CSS class should apply one style, not several. That approach became known as atomic CSS.

Atomic CSS is a rule for writing style code. Atomic design is a way to organise visible interface parts. An atom in atomic CSS is one style rule, such as a margin. An atom in atomic design is a part a user sees, such as a button. A team can use either one without the other.

062 min

Where atomic design breaks down

Once a team starts sorting parts into levels, the borders between levels become the first argument.

Molecule or organism?

Is a card with an image, a title and a button a molecule or an organism? Teams spend whole meetings on questions like this. The usual test says a molecule is a small group with one job, and an organism is a larger, more complex section. But a card can be small and complex at the same time, so the test often gives no answer. Templates and pages cause a second confusion. In a design file, a template filled with sample text looks exactly like a page, so reviewers are often unsure which one they are approving.

The names are not rules

In 2019 Frost wrote that atomic design is not rigid dogma. He said the purpose of any naming scheme is to help a team communicate clearly, and teams should change names that do not help. The common misreading is to treat the five levels as boxes that every part must fit into.

The GOV.UK Design System, used across UK government services, shows another way to sort the same parts. It uses three groups: styles, components and patterns. Styles cover layout, type, colour and images. Components are reusable parts such as text inputs and tables. A pattern solves one task a user is trying to complete, and it usually uses one or more components. Asking a user for an address is one of its patterns. The parts are the same kind of parts. Only the names and the number of levels differ.

When one atom change reaches every page

The main benefit of atomic design is that a change to one part appears everywhere. That is also its main risk. If the subscription app's team changes the button atom, the checkout page changes on the same day, even if nobody has tested checkout with the new button.

A passage in Frost's book describes the usual answer: give each release of the shared parts a version number. Product teams then move to a new version when they are ready, by changing the version number they load. In the subscription app, the checkout team moves to version 1.3.5 right away, and the help team stays on 1.3.4 until it has tested the new button. The cost is that two versions of the button are live for a while, which is the kind of difference the method set out to remove. Teams accept it for a short, planned period.

design systembutton1.3.5checkout1.3.5help1.3.4
Follow the single arrow: only the checkout team has taken the new release, so for a short time two versions of the same button are live.

071 min

Atomic design and accessibility

Shared parts also change how accessibility work spreads through a product. In the subscription app, the third search box had no label, so screen-reader users heard no name for the field. Building the search form as one molecule with a proper label fixes it on all three screens at once. This is the strongest accessibility argument for atomic design: a fix at the smallest level reaches every page that uses the part.

Why accessible parts can still make an inaccessible page

Some accessibility rules apply to the whole page, not to any one part. WCAG 2.2 Success Criterion 2.4.3, Focus Order, requires that a keyboard user moves through the page in an order that keeps its meaning and its controls usable. Each organism can pass on its own and the page can still fail.

Suppose the subscription app's checkout template puts the order summary before the payment form in the code, but shows it to the right of the form on screen. A keyboard user tabs into the summary, then back to the form, then across again. No atom is at fault. The order is set by the template. So focus order has to be tested at the template and page levels, with a keyboard, every time organisms are rearranged.

081 min

How atomic design changed since 2013

Frost has kept revising the method, and each change has widened its scope. In 2013 atomic design described how one team could organise one product's interface. By 2019 Frost was telling teams to rename and extend the levels to fit their own organisations.

In January 2024 Frost proposed a Global Design System: a shared library of common UI components that would work with any web technology. His argument was that thousands of organisations build the same basic parts again and again, such as buttons, form fields and dialogs. If such a library existed, a product's atoms and many of its molecules would come from outside the company. A team's own work would start at the organism level, where its product is actually different from others. The proposal is still a proposal. No shared library of that kind has replaced company design systems so far.

092 min

How to apply atomic design to a product

For a team starting today, the method begins with what already exists, not with a blank list of atoms.

  1. Collect every version of each part.

    The team takes a screenshot of every screen and groups the parts that do the same job. The team puts the three search boxes side by side: one from the help page, one from the account page and one from the checkout page. Seeing them together shows how different the copies have become. Frost's book calls this collection an interface inventory.

  2. Name the atoms first.

    Agree on the colours, type sizes, spacing values and basic controls. Many teams store the first three as design tokens: named values that design files and code both read.

  3. Rebuild each molecule for one job.

    Replace the three search boxes with one search form molecule, and list its states: empty, filled, no results and error.

  4. Test on pages with real content.

    Use the longest real product name, an empty result and a translated label. Fix problems in the smallest part that causes them.

  5. Write down what each part is for

    , and when not to use it, in the pattern library.

Build each part away from the page

Building a part inside the page it was designed for hides its problems, because the page supplies the space, the content and the surrounding styles. Tom Coleman named this way of working Component Driven in 2017. A team builds each part in isolation, away from any page, and checks every state it can be in. Tools such as Storybook show one part at a time for this reason. When a bug appears in an isolated part, only that part can be causing it, so the bug is found faster than on a full screen.

When to skip it

Skip the full method for small, short-lived work. A one-page campaign site that runs for a month has too few repeated parts to repay the effort of naming five levels. The method saves the most work in a product with many screens, several designers, or several platforms. That is where copies of a part become different, and where one shared part is cheaper than many separate ones.

search boxeshelpaccountcheckoutsearch formhelpaccountcheckout
Compare the two windows: three search boxes of different sizes become one search form, used unchanged on all three pages.

?4 questions

Questions people ask

Is atomic design only for websites?

No. Frost wrote it for web interfaces, but the levels fit any interface built from repeated parts, including native mobile apps. The names describe size and what a part contains, not a technology.

Do I need Pattern Lab to use atomic design?

No. Pattern Lab is one tool for it. Teams also use component libraries in design tools such as Figma and part-by-part tools such as Storybook. The method is a way of sorting parts, not a product.

Should my code folders be named atoms, molecules and organisms?

Only if the names help your team. Some React and Vue projects use those folder names, and others group code by feature. The method works either way, as long as everyone agrees where each part lives.

What are design tokens in atomic design?

Design tokens are named values for colour, type size, spacing and similar choices. They sit underneath atoms. A button atom reads tokens for its colour and padding, so changing a token changes every atom that uses it.

§11 sources

Sources

  1. Frost, B. (2013, 10 June). Atomic Design. bradfrost.com.

  2. Frost, B. Atomic Design, chapter 2: Atomic Design Methodology.

  3. Frost, B. Atomic Design, chapter 5: Maintaining Design Systems.

  4. Frost, B. Atomic Design (book home page).

Show all 11 sources
  1. Frost, B. (2019). Extending Atomic Design. bradfrost.com.

  2. Frost, B. (2024, 9 January). A Global Design System. bradfrost.com.

  3. Koblentz, T. (2013, October). Challenging CSS Best Practices. Smashing Magazine.

  4. Sullivan, N. Object Oriented CSS project wiki. GitHub.

  5. Component Driven User Interfaces (history of the term, introduced by Tom Coleman in 2017).

  6. W3C. Understanding Success Criterion 2.4.3: Focus Order (WCAG 2.2).

Keep reading

More from Design

All of Design
All of Design