Skip to content

Uber Eats Design System

Uber Eats leads with address search: amber food photography, 52px UberMove headlines and black pill CTAs, as colors, type and components for React.

Primary color
#000000
Typeface
UberMoveText
Shape
Soft
Base radius
8px
Colors
5
Type tokens
11
Components
15
Spacing values
7

About Uber Eats DESIGN.md

Curated by Dov Azencot, updated May 19, 2026. Source ubereats.com (opens in a new tab).

Uber Eats' marketing page makes a counterintuitive move for a brand famous for its green accent: the landing page at ubereats.com is structurally black and white. The above-fold hero is warm only because a large food photograph — a burger, fries, a tomato — bleeds warmth into the composition. The actual design system tokens underneath are ink black, pure white, and two neutral grays. The green that appears in the mobile app and brand advertising is absent from the captured marketing surface. What reads as amber is photography, not a brand color declaration.

The DESIGN.md file packages the system into a machine-readable spec: 5 colors tokens drawn from a strictly ink-black-and-white palette with two light gray surfaces, 11 typography tokens spanning UberMove bold at 28–52px for all heading tiers and UberMoveText at 14–18px for body and interface copy, 5 radius tokens anchored on a 500px pill as the dominant shape (the navigation sign-up button, all CTA chips, every badge), and 15 components covering the hero search form, the address typeahead input, the pill button, the split-section card, and the full-width map tile.

Feed this file to Claude or Cursor and it reproduces Uber Eats' specific moves: pure-black pill CTAs rather than a green or colored fill, hero photography carrying the chromatic weight the brand doesn't declare in CSS, address-search as the hero's primary interaction rather than a browse button, and UberMove's single bold-only heading tier that creates typographic authority without a weight ladder. The one thing worth borrowing carefully is the photography-as-canvas approach — it only works when the imagery is consistently warm and high-production; inconsistent photography collapses the system back to plain black-and-white.

What makes it distinct

5 highlights

  1. Photography-as-brand-canvasThe hero amber warmth comes entirely from food photography, not a declared brand color; the design system is structurally black-and-white below the fold
  2. 500px border-radius pillThe primary CTA and every badge/tag uses a near-infinite radius, making pill geometry the single most distinctive shape signal in the system
  3. Address-search as hero CTAUnlike most food apps that lead with a Browse button, Uber Eats puts the location typeahead front-and-center as the primary above-fold action
  4. Two-weight type splitUberMove (700 weight only) carries every heading; UberMoveText (400–500) carries everything else, creating a sharp editorial/utility divide with no middle tier
  5. Black-on-white below the foldOnce the hero photography ends, the system drops to pure ink on white with near-zero chromatic elements, trusting city-name grids and map thumbnails as the visual interest

Live at ubereats.com

Uber Eats in production, as captured. Scroll the window to see the whole page.

Uber Eats's website at ubereats.com

5 colors

Uber Eats's system runs on #000000 as its primary voltage, used in 15 of 15 components. Type is set in UberMoveText across 11 tokens from 14px to 52px, weights 400–700. Shape language is soft — components average 114px corner radius, with no sharp interactive edges.

Surface

Page and card backgrounds · 3

Text

Headlines, body, captions · 2

11 type tokens

Set in UberMoveText across 11 tokens, from 14px to 52px, weights 400–700. Shown in its own stack: where the font isn't installed, the fallback the file names stands in.

  • display-xl52px · weight 700 · lh 64pxThe quick brown fox jumps over the lazy dog
  • display-md36px · weight 700 · lh 44pxThe quick brown fox jumps over the lazy dog
  • display-sm28px · weight 700 · lh 36pxThe quick brown fox jumps over the lazy dog
  • body-lg18px · weight 500 · lh 24pxThe quick brown fox jumps over the lazy dog
  • body-md16px · weight 400 · lh 24pxThe quick brown fox jumps over the lazy dog
  • body-md-medium16px · weight 500 · lh 20pxThe quick brown fox jumps over the lazy dog
  • body-sm14px · weight 400 · lh 20pxThe quick brown fox jumps over the lazy dog
  • label-md14px · weight 500 · lh 16pxThe quick brown fox jumps over the lazy dog
  • nav-link18px · weight 500 · lh 24pxThe quick brown fox jumps over the lazy dog
  • button-md14px · weight 500 · lh 16pxThe quick brown fox jumps over the lazy dog
  • caption14px · weight 400 · lh 20pxThe quick brown fox jumps over the lazy dog

Radii and spacing

4 corner radii and 7 spacing values. Shape language: soft, on a 8px base radius.

Radii4

  • none0px
  • sm8px
  • pill500px
  • full9999px

Spacing7

  • xs8px
  • sm12px
  • base16px
  • lg24px
  • xl40px
  • 2xl64px
  • section72px

15 components

Each rendered from its tokens (color, type, radius, padding) on Uber Eats's own canvas.

  • Button Primary
    Button Primarybutton-primary
  • Button Secondary
    Button Secondarybutton-secondary
  • Top Nav
    Top Navtop-nav
  • Nav Link
    Nav Linknav-link
  • Hero Heading
    Hero Headinghero-heading
  • Section Heading
    Section Headingsection-heading
  • Body Paragraph
    Body Paragraphbody-paragraph
  • Type here…
    Text Inputtext-input
  • Search Wrapper
    Search Wrappersearch-wrapper
  • Card
    Cardcard
  • Feature Card
    Feature Cardfeature-card
  • City Link
    City Linkcity-link
  • Section Band
    Section Bandsection-band
  • Footer
    Footerfooter
  • Map Tile
    Map Tilemap-tile

The system, in use

Uber Eats's tokens on the kind of product it builds.

Marketing heroThe homepage: its nav, a headline and the main call to action.
Uber Eats
Order

Your favorites, delivered fresh

Order from the menu you love and follow it to your door in minutes.

Order nowView menu
Uber EatsJ
AllMenuDealsRewardsLocations
Popular right nowSee all
Classic burger$8.99Garden salad$7.49Crispy chicken$9.29Pizza$11.99Iced drink$4.49
CheckoutPaying: the order summary beside the card form.
Uber EatsSecure checkout
Your order$24.46
Classic burger2 × $8.99$17.98FriesLarge$3.49Delivery$2.99
Total$24.46
Emailyou@example.comCard information1234 1234 1234 1234VISAMCAMEXExpiryMM / YYCVCCVCPlace order

Uber Eats design system FAQ

Uber Eats's tokens, its components and how to use this DESIGN.md in your project.

What are the color tokens in the Uber Eats DESIGN.md?

Uber Eats's DESIGN.md has 5 color tokens: ink (#000000), canvas (#ffffff), surface-1 (#f3f3f3), surface-2 (#e8e8e8) and ink-muted (#000000). Every value is a quoted hex you can copy.

What is Uber Eats's primary color hex code?

The color token `ink` is #000000, used by 15 components. The surface behind it is `canvas` (#ffffff).

How do I use Uber Eats's colors in Tailwind CSS?

Map the tokens to your CSS variables: `ink` (#000000) to `--primary`, `canvas` (#ffffff) to `--background`, `ink` (#000000) to `--foreground`. shadcn/ui's Tailwind setup maps them to classes such as `bg-primary` and `text-foreground`, so they then use Uber Eats's palette.

What is Uber Eats' primary brand color?

The captured marketing surface at ubereats.com is structurally black and white — there is no declared brand-layer color with more than 1 usage occurrence. The amber warmth that defines the above-fold hero comes entirely from food photography, not from a CSS color token. The primary CTA button uses ink black as its background fill. Uber Eats' famous green appears in the mobile app and brand advertising but is absent from the marketing site's extracted palette. If you need a green accent for an Uber Eats-style component, use the app's well-known green as a supplemental token rather than treating it as extracted ground truth.

Use Uber Eats in your project

One machine-readable file. Drop it into Claude Code, Cursor, VS Code or any AI tool that reads DESIGN.md.

Download DESIGN.md
  1. Download the DESIGN.md

    One machine-readable file: every color, type, radius, spacing, and component token of Uber Eats.

  2. Feed it to your AI tool

    Drop it into Claude, Cursor, or GitHub Copilot. The agent writes React components and Tailwind classes that match Uber Eats's visual language.

  3. Reference the tokens directly

    Or paste the values into your Tailwind config, CSS variables, or component library: every color, size and radius is a quoted, ready-to-copy value.

Read the full DESIGN.md overview, rationale, do’s and don’ts

Overview

Uber Eats' marketing system is built on a paradox. Photography-as-canvas: a brand associated with a specific green delivers its entire above-fold chromatic energy through food photography rather than declared brand colors. The ink black and pure white that the CSS actually specifies are the entire structural palette — 997 and 36 occurrences respectively. The amber and warmth that register visually come from burgers, fries, and fresh produce photographed at high production quality. Where DoorDash runs a red-filled hero band and Grubhub uses dark near-black surfaces, Uber Eats delegates the hero's mood entirely to the imagery.

The typography system makes a matching editorial choice: two proprietary families with a strict role split and no overlap. UberMove runs exclusively at weight 700 across all heading sizes (28–52px), creating authority through scale alone. UberMoveText handles every other surface — buttons, body copy, navigation, captions — at weights 400 and 500. There is no medium-weight heading, no light-weight display. The gap between the bold heading tier and the interface tier is wide enough that no element risks occupying an ambiguous middle.

Key Characteristics:

  • No declared brand color with more than 1 usage occurrence — ink black ({colors.ink}) at frequency 997 is the page's dominant color, used as text, border, and shadow.
  • 500px border-radius pill geometry on every interactive element — the primary CTA, the nav sign-up button, all category chips — while cards and the search wrapper use 8px rounding. The system is binary: pill or soft-card, nothing in between.
  • UberMove bold (700) for all headings, UberMoveText medium/regular (400–500) for all interface copy — a two-family split with no weight crossover.
  • Address-search typeahead as the primary above-fold action, not a Browse button — the hero gates restaurant browsing behind location entry.
  • Below-fold sections drop to pure white canvas with dense city-name and country-name link grids — no photography, no color, no gradient bands.
  • Photography carries the entire emotional weight of the brand; the CSS token system is structurally monochrome.

Colors

Structural

  • Ink ({colors.ink} — #000000): frequency 997. Used as text (483), border (483), shadow (28), background (3). The near-total dominant color — pure black runs the entire navigation, heading, body-copy, and link system. Not near-black; true zero-lightness black is the deliberate choice for every typographic surface.
  • Canvas ({colors.canvas} — #ffffff): frequency 36. Used as background (31), text (3), border (2). The page floor beneath the photography hero and in all below-fold content bands. Pure white, not an off-white — there is no cream or warm-white softening in the system.
  • Surface-1 ({colors.surface-1} — #f3f3f3): frequency 5. Used as background (3), shadow (2). The light neutral behind section divider bands and subtle card lift contexts.
  • Surface-2 ({colors.surface-2} — #e8e8e8): frequency 3. Used as background (3). The secondary neutral for map tile backgrounds and feature-section fills.

Typography

Font Families

The system runs two proprietary custom families. UberMove carries every heading tier — it appears exclusively at weight 700, at sizes 28px, 36px, and 52px. The fallback stack is sans-serif, which makes the system entirely dependent on the custom font loading correctly; there is no system-ui intermediate fallback. UberMoveText runs on every non-heading surface — body paragraphs, navigation links, buttons, form labels, captions — at weights 400 and 500. The fallback stack is system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif, which provides reliable degradation through a standard system-ui chain.

Hierarchy

TokenSizeWeightLine HeightUse
{typography.display-xl}52px70064pxHero h1 ("Order delivery near you")
{typography.display-md}36px70044pxSection h2 ("Cities near me")
{typography.display-sm}28px70036pxSub-section headings
{typography.body-lg}18px50024pxNav links and nav CTAs
{typography.body-md}16px40024pxDefault body paragraphs
{typography.body-md-medium}16px50020pxEmphasized body and product callouts
{typography.label-md}14px50016pxButton labels and small CTAs
{typography.body-sm}14px40020pxCaption text and secondary links
{typography.nav-link}18px50024pxTop-nav interactive links
{typography.button-md}14px50016pxAll button label text
{typography.caption}14px40020pxFooter and metadata text

Note on Font Substitutes

Both UberMove and UberMoveText are proprietary. For UberMove at weight 700, Geist Bold or Inter Black (weight 900) approximates the display confidence; both share the humanist grotesque structure. For UberMoveText, Inter at weights 400 and 500 is the closest open-source substitute — the proportions transfer cleanly at the 14–18px interface sizes.

Layout

Spacing System

  • Base unit: 8px, with 16px as the primary module.
  • Tokens: {spacing.xs} 8px · {spacing.sm} 12px · {spacing.base} 16px · {spacing.lg} 24px · {spacing.xl} 40px · {spacing.2xl} 64px · {spacing.section} 72px.
  • Hero section padding (vertical): 72px top, 88px bottom — the most generous spacing interval in the system.
  • Nav horizontal padding: 40px on each side, creating a wide gutter that keeps the wordmark and navigation from crowding the viewport edges.
  • Card internal padding: 16px — consistent across all card surfaces.

Grid & Container

  • Hero: full-width with a 240px-wide left column holding the headline, search input, and subtext, while the right side extends into the full-bleed food photography.
  • Feature row: 3-column equal-width grid for the B2B feature cards (employee ordering, restaurant delivery, courier sign-up).
  • City grid: multi-column alphabetical link list filling the full container width — the system's densest typographic surface.
  • Max content width: implied at ~1280px based on the nav padding and hero composition.

Rhythm

The page is organized as a two-act structure: a single above-fold photographic hero (the brand moment), followed by a sequence of white-canvas informational sections with progressively denser content — feature cards, a full-bleed map, a city grid, a country grid, and the footer. The rhythm compresses as you scroll down; the brand expression concentrates entirely at the top.

Elevation

The system has no meaningful shadow tier. The 28 shadow occurrences captured all use {colors.ink} (black) at low opacity — subtle elevation cues on the search wrapper and the nav bar. Depth on the page comes from three sources: the photography hero blending into the white canvas below, the {colors.surface-1} gray bands separating content sections, and the 8px border-radius card containers sitting on the white floor. No decorative drop-shadow treatment appears anywhere below the fold.

Shapes

The radius vocabulary is binary: pill or soft-card.

  • {rounded.none} 0px — applied to the address typeahead input field, which sits flush inside its search wrapper container.
  • {rounded.sm} 8px — the search wrapper, cards, and map tile containers. The default "content surface" radius.
  • {rounded.pill} 500px — the primary CTA button, the nav "Sign up" link, every category chip, and every badge element on the page. This value renders as a fully-rounded pill on any button-height element.
  • {rounded.full} 9999px — equivalent to the pill treatment for icon-only circular elements.

The 500px pill is the brand's most distinctive geometric signal. On a page this typographically restrained, the fully-rounded interactive elements stand out as the system's single personality statement.

Components

button-primary — Ink-black fill, white text, {rounded.pill} 500px radius, 12px padding, 36px height. The page's primary CTA — "Sign up" in the nav and the search submission target.

button-secondary — White fill, ink text, 1px ink border, pill radius. Used for secondary actions at the same size as the primary.

top-nav — White canvas, 72px height, 40px horizontal padding. Houses the Uber Eats wordmark and a right-aligned "Sign in" / "Sign up" cluster. No bottom border, no shadow.

nav-link — The nav "Sign up" target: ink-black background, white text, 8px radius, 12x16px padding — deliberately a filled dark pill in contrast to a transparent nav link, signaling the single recommended action.

hero-heading — Ink text on transparent surface, {typography.display-xl} (52px / 700). The hero h1 sits over the white left-column background before the photography takes over.

section-heading — Ink text, {typography.display-md} (36px / 700). Section-level headings in below-fold content.

body-paragraph — Ink text at {typography.body-md-medium} (16px / 500). Slightly heavier than the default 400 weight — product descriptions and feature callouts use medium weight body copy.

text-input — White canvas, ink text, no border-radius, no visible border in the captured extraction. Sits inside the {component.search-wrapper} as a contained input.

search-wrapper — White canvas, ink text, {rounded.sm} 8px radius, 12x16px padding, 56px height. The outer container holding the address typeahead and delivery-type selectors — the hero's primary interaction element.

card — White canvas, ink text, {rounded.sm} 8px, 16px padding. The base card for feature sections.

city-link — Transparent background, ink text at {typography.body-md}. Renders in dense multi-column grids — typographically the smallest unit in the system.

section-band — Light gray {colors.surface-1} background, full-width, generous vertical padding. Separates the content sections below the fold.

footer — White canvas, ink text at {typography.caption}, 40px padding. No surface contrast against the page floor.

Do's and Don'ts

Do use photography to carry the system's chromatic weight above the fold. The ink-black token structure works because a high-production food photograph does the color work. A composition that relies on the CSS tokens alone will read as a black-and-white directory — the photography is load-bearing, not decorative.

Do apply the 500px pill radius to every interactive affordance — buttons, chips, badges, and status tags. The binary radius language (8px for surfaces, pill for interactives) is the system's shape signature; mixing in a 12px or 24px rounded button would read as an error.

Do keep UberMove exclusively at weight 700. Using UberMove at any weight other than 700 is not supported by the extraction — the font appears only in bold, and a lighter-weight display heading in the same family would undercut the heading-versus-interface division.

Do treat the address typeahead as the hero's primary action, not a "Get started" or "Order now" button. The location-gate pattern is the page's information architecture, not decorative — it sets the user's path through the product.

Don't use {colors.surface-2} (#e8e8e8) as a text background inside cards — it appears only 3 times, all as background fills on the map tile. Pairing body text on this gray would introduce a mid-tone surface the system doesn't use for content.

Don't add a heading weight below 700 in UberMove. The two-family split has no intermediate heading weight — using UberMove at 400 or 500 would conflict with the system's division where UberMoveText owns all non-700 weights.

Don't substitute a colored CTA button for the ink-black primary. The primary button is #000000 fill — introducing a green, amber, or any chromatic button fill invents a token that doesn't exist in the captured marketing surface.

Don't use {colors.canvas} (#ffffff) as an ink or border color over dark backgrounds. The system has no dark-surface sections — all content areas below the fold are white-canvas. There is no established light-on-dark pattern for content components.

Known Gaps

  • Brand green: Uber Eats' well-known green accent (visible in the mobile app and brand advertising) does not appear in the captured marketing page extraction. Any green implementation would require referencing the app's color system, not these marketing tokens.
  • Mobile breakpoints: the captured surface is at 1440px desktop width. The below-fold city grids and feature cards likely reflow significantly on mobile — the multi-column dense grids would not survive at 375px without substantial restructuring.
  • Hover and focus states: no hover captures exist in the extraction. The full state matrix (input focus ring, button hover, nav hover) is not represented here.
  • Dark mode: the marketing site is light-only. The Uber Eats app carries a dark theme that is not represented in this spec.
  • Restaurant card / browse surface: the main product interaction — restaurant cards, menu items, ratings, price indicators — belongs to the app and authenticated delivery UX, which is not captured by the marketing landing page extractor.
  • Animation: the hero photography loads with a fade-in sequence; the search typeahead has dropdown autocomplete styling. End-state values only are captured here.

More systems like this

Chipotle, Domino's, Five Guys and 12 more in Food & Delivery: each brand's colors, type and components in one file your AI agent builds from.

Build it with Pro

The DESIGN.md files are free. Pro adds 6,000+ blocks, premium templates and the MCP server, so your AI editor builds in your system for you.

4.9/5 out of 5 · 150+ reviewsfrom 150+ founders and developers.

Billed once a year in USD. Cancel anytime.

Individual

For personal projects & open source

$32instead of $49/mo

$389 billed yearly

  • How many people can use the license.Seats: 1 seat
  • Client work, SaaS products and anything you charge for.Commercial use: Personal & open source only
  • Page sections in 56 categories, from heroes and pricing tables to dashboards and settings, on every framework and UI library, in your theme.Blocks: All 6,181 blocks
  • Complete Next.js sites for startups, SaaS, agencies and portfolios, every page designed, ready to ship.Templates: All 14 templates
  • Your AI agent searches, previews and installs any component, block, icon or DESIGN.md from a prompt: 22 tools in Claude Code, Cursor, VS Code and 35 more clients.MCP server: 38 AI clients
  • Buttons with motion and states of their own, from an arrow that slides in to a burst of confetti.Animated buttons: All 35 buttons
  • Typewriters, scrambles, counters and more, for headlines, labels and numbers.Text effects: All 97 effects
  • Animated backgrounds for heroes, sections and cards, from a soft aurora to a flock that flees the cursor. Most are pure CSS.Backgrounds: All 100 backgrounds
  • WebGPU shaders, from a slow aurora to a black hole, each drawing only while it's on screen.Shaders: All 100 shaders
  • One design and one theme on all four: the components, blocks and effects are built for each framework.Frameworks: React, Vue, Svelte, Solid
  • React on Base UI, Radix UI, React Aria or Ark UI: install the version for the library your project already uses. Vue, Svelte and Solid run on Ark UI.UI libraries: Base UI, Radix, Aria, Ark
  • From a button to a date picker, a color picker or a guided tour: accessible, typed in TypeScript, each with live demos.Components: All 174 components
  • Real-world patterns built from the components, in 53 galleries: forms, tables, menus, dialogs and more.Examples: All 1,103 examples
  • Area, bar, line, pie, radar and radial charts on TanStack Charts, on every framework. React also gets the Recharts originals.Charts: All 70 charts
  • Debounce, local storage, media queries and more: each hook is one typed file you own.React hooks: All 35 hooks
  • From 222 libraries, Lucide, Heroicons, Tabler and Material Symbols among them, as SVG or a React component in one command.Icons: 294k+ icons
  • Stripe, Linear, Apple and 497 more: a brand's colors, typography and components in one file your AI agent builds from.DESIGN.md files: All 500 brands
  • Restyle every component and block at once: 8 styles, 7 grays, 18 colors and 5 radii, shared as a shadcn preset code.Theme builder: 8 styles × 18 colors
  • Priority requests are answered first.Support: Standard

Team

Most popular

For freelancers, agencies & startups

$66instead of $99/mo

$789 billed yearly · ≈ $13/dev/mo

Everything in Individual, plus

  • How many people can use the license.Seats: Up to 5 seats
  • Client work, SaaS products and anything you charge for.Commercial use: Included
  • Priority requests are answered first.Support: Priority

Organization

For companies with larger teams

$132instead of $199/mo

$1,589 billed yearly

Everything in Team, plus

  • How many people can use the license.Seats: Unlimited seats
  • Secure checkout via Stripe
  • Code lives in your repo
  • Keep what you've shipped if you cancel
  • License terms

4.9 out of 5 from 150+ developers

Your system, built for you

Every block, template and icon, installed by your AI agent in your design system. The DESIGN.md files stay free.

Get Pro
  • Cancel anytime
  • Keep what you've shipped