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.
| Concept | What it is | How it relates to atomic design |
|---|---|---|
| DesignDesign system | ||
| Not in the library yetPattern library | ||
| EngineeringModularity | ||
| Not in the library yetAtomic CSS |
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.
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.
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.
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.
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.
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.
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.
?4 questions
Questions people ask
Is atomic design only for websites?
Do I need Pattern Lab to use atomic design?
Should my code folders be named atoms, molecules and organisms?
What are design tokens in atomic design?
§11 sources
Sources
Frost, B. (2013, 10 June). Atomic Design. bradfrost.com.
Frost, B. Atomic Design, chapter 2: Atomic Design Methodology.
Frost, B. Atomic Design, chapter 5: Maintaining Design Systems.
Frost, B. Atomic Design (book home page).
Show all 11 sourcesShow fewer sources
Frost, B. (2019). Extending Atomic Design. bradfrost.com.
Frost, B. (2024, 9 January). A Global Design System. bradfrost.com.
Koblentz, T. (2013, October). Challenging CSS Best Practices. Smashing Magazine.
Sullivan, N. Object Oriented CSS project wiki. GitHub.
Component Driven User Interfaces (history of the term, introduced by Tom Coleman in 2017).
W3C. Understanding Success Criterion 2.4.3: Focus Order (WCAG 2.2).
GOV.UK Design System. Patterns.