OpenAI's interface is the visual argument that powerful technology should feel quiet.
Needs work: freshness conflict · token source unverified · verification v2 missing
OpenAI's interface is the visual argument that powerful technology should feel quiet. The canvas is uncompromising near-black-on-white (#0d0d0d text on #ffffff), with the signature teal-green (#10a37f) reserved almost exclusively for the moments that matter — the active state, the brand mark, a confirmation. There is no gradient theater, no glassmorphism, no drop-shadow drama. The page reads like a well-set book that happens to be interactive: generous margins, a single column of attention, type doing nearly all the expressive work.
The 2025 rebrand crystallized this with OpenAI Sans, a bespoke grotesque commissioned from ABC Dinamo, replacing the previous Klim Type Foundry pairing of Söhne (UI/blog) and Signifier (research papers). OpenAI Sans is humanist-leaning — open apertures, a warm single-story a, slightly squared terminals — engineered to feel approachable at body sizes and authoritative at display sizes. It ships in five weights (Light, Regular, Medium, Semibold, Bold), each with a true italic. The product surface (ChatGPT, the API platform, the marketing site) leans on Regular and Medium, escalating to Semibold/Bold only for headings.
What defines OpenAI visually is restraint as a statement of trust. The aesthetic refuses the neon-and-glow visual language that became shorthand for "AI." Instead it borrows from editorial design and Swiss typography: a system that recedes so the model's output is the only thing on stage. The product is dark-mode-native too — ChatGPT's default-dark surfaces (#212121, #171717) are as canonical as the light marketing pages, and the teal accent is tuned to hold contrast in both.
Key Characteristics:
#10a37f) as the singular brand/interactive accent — used sparingly, never decoratively#0d0d0d text on pure white #ffffff (light) / off-white on #212121 (dark)#e5e5e5) and subtle surface tints#10a37f): Primary brand and interactive color — the logo mark, primary CTAs, active links, focus accents, success affirmations. Used with discipline; it is the only saturated hue in most layouts.#1a7f64): Darker teal for hover/pressed states on teal-filled elements.#d9f2ea): Subtle teal-tinted backgrounds — inline success banners, selected rows.#ffffff): Page background and card surface in light mode.#0d0d0d): Primary text and the "black" of the wordmark. A true-feeling near-black, not pure #000, for softer contrast.#000000): The official monochrome logo lockup on light backgrounds.#ffffff): The inverse logo on black/dark backgrounds.#10a37f): Permitted accent for the blossom/spiral mark in select brand contexts; the primary lockup remains monochrome.#ef4146): Destructive actions, error states, validation failures.#10a37f): Confirmation and success — reuses the brand teal (the brand color is the success color).#f5a623): Caution, rate-limit warnings, pending review.#4d6bfe): Informational callouts, links in documentation contexts.#f7f7f8): Lightest surface — ChatGPT sidebar/light fills, code-block backgrounds.#ececec): Secondary surface, hover fills, disabled backgrounds.#e5e5e5): Default border, divider, hairline.#d1d1d1): Stronger border, input outline.#b4b4b4): Placeholder text, disabled icon.#9b9b9b): Caption / tertiary text.#6e6e80): Secondary body text, metadata (the signature OpenAI muted slate).#40414f): Emphasized secondary text.#2d2d2d): Strong labels, near-dark UI text.#0d0d0d): Primary text / near-black.#212121): ChatGPT main canvas in dark mode.#171717): Sidebar, deeper panels.#2f2f2f): Cards, message bubbles, input bar on dark.#3e3e42 / rgba(255,255,255,0.1)): Hairline dividers on dark surfaces.#ececec): Body text on dark.#b4b4b4): Secondary text on dark.#e5e5e5 (light) / rgba(255,255,255,0.1) (dark).#d1d1d1 (light) / rgba(255,255,255,0.2) (dark).rgba(0,0,0,0.5) — modal backdrop, identical across modes."OpenAI Sans", "Söhne", "Helvetica Neue", Helvetica, Arial, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif"Signifier", "Charter", Georgia, "Times New Roman", serif — used for long-form research papers and select editorial moments."SF Mono", "Söhne Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display Hero | OpenAI Sans | 56px | 600 | 60px (1.07) | -0.02em | Marketing hero, launch pages |
| Display Large | OpenAI Sans | 40px | 600 | 46px (1.15) | -0.02em | Section headers |
| Heading 1 | OpenAI Sans | 32px | 600 | 40px (1.25) | -0.01em | Page titles |
| Heading 2 | OpenAI Sans | 24px | 600 | 32px (1.33) | -0.01em | Sub-sections, card titles |
| Heading 3 | OpenAI Sans | 20px | 600 | 28px (1.40) | normal | Group labels, modal headers |
| Subtitle | OpenAI Sans | 18px | 500 | 28px (1.56) | normal | Lead paragraphs, list headers |
| Body Large | OpenAI Sans | 16px | 400 | 26px (1.63) | normal | Marketing body, descriptions |
| Body | OpenAI Sans | 15px | 400 | 24px (1.60) | normal | Standard reading text, chat |
| Body Small | OpenAI Sans | 14px | 400 | 22px (1.57) | normal | Secondary info, dense UI |
| Caption | OpenAI Sans | 13px | 400 | 18px (1.38) | normal | Timestamps, metadata, helper |
| Code | SF Mono / Söhne Mono | 14px | 400 | 22px (1.57) | normal | Code blocks, tokens, IDs |
OpenAI buttons are calm, soft-cornered, and high-contrast. The default action is a solid near-black (or teal for brand CTAs); secondary actions are outlined or ghost. Geometry is consistent: ~12px radius for standard buttons, full pill for compact/chip actions.
Primary (Black)
#0d0d0d#ffffff#2d2d2d#000000#e5e5e5 bg / #9b9b9b textPrimary (Teal / Brand CTA)
#10a37f#ffffff#1a7f64Secondary (Outline)
#ffffff#0d0d0d#d1d1d1#f7f7f8 bg, border #0d0d0dGhost / Tertiary
#0d0d0d#ececec bgPill (Compact / Suggestion chip)
#ffffff#0d0d0d#e5e5e5#f7f7f8Dark-mode Primary
#ffffff#0d0d0dOpenAI's signature input is the ChatGPT composer — a large, fully-rounded field that anchors the screen. Form inputs in the API platform use rectangular soft-cornered fields.
Chat Composer (signature)
#ffffff (light) / #2f2f2f (dark)#0d0d0d / #ececec#e5e5e5 / rgba(255,255,255,0.1)#9b9b9b#b4b4b4; soft 0 2px 8px rgba(0,0,0,0.08) liftStandard Form Field
#ffffff#0d0d0d#d1d1d1#9b9b9b#10a37f + 0 0 0 3px rgba(16,163,127,0.2) ringError Field
#ef41460 0 0 3px rgba(239,65,70,0.2)#ef4146 13pxStandard
#ffffff#e5e5e5Interactive / Hover
#ffffff#e5e5e5#0d0d0d or subtle 0 4px 12px rgba(0,0,0,0.06) liftDark Card
#2f2f2frgba(255,255,255,0.1)User Message
#f7f7f8 (light) / #2f2f2f (dark)#0d0d0d / #ecececAssistant Message
#0d0d0d / #ecececDefault (Neutral)
#ececec#40414fTeal (Brand / New)
#d9f2ea#1a7f64Amber (Caution)
#fdf0d5#b8770fUnderline Tabs
#6e6e80#0d0d0d#0d0d0d (or #10a37f in brand contexts)Segmented
#ececec#ffffff bg + #0d0d0d text + 0 1px 3px rgba(0,0,0,0.08)#6e6e80 textDefault
#0d0d0d#ffffff0 4px 16px rgba(0,0,0,0.16)Centered Modal
#ffffff (light) / #2f2f2f (dark)#e5e5e5 / rgba(255,255,255,0.1)0 8px 32px rgba(0,0,0,0.16)rgba(0,0,0,0.5)Default
#10a37f (on) / #d1d1d1 (off)#ffffff 18px circle, 0 1px 2px rgba(0,0,0,0.1)Tier 1 sources: https://openai.com (live production site, verified via live DOM getComputedStyle).
| Level | Treatment | Use |
|---|---|---|
| Flat (Level 0) | No shadow; hairline border #e5e5e5 | Cards, page sections, default surfaces |
| Subtle (Level 1) | 0 1px 3px rgba(0,0,0,0.08) | Active segmented control, slight lift |
| Standard (Level 2) | 0 2px 8px rgba(0,0,0,0.08) | Composer focus, hover cards, dropdowns |
| Elevated (Level 3) | 0 4px 16px rgba(0,0,0,0.12) | Popovers, menus, toasts |
| Modal (Level 4) | 0 8px 32px rgba(0,0,0,0.16) | Dialogs, command palette |
Shadow Philosophy: OpenAI prefers borders over shadows. A 1px #e5e5e5 hairline defines most edges; shadow appears only on genuinely floating elements (menus, modals, the composer on focus). Shadows are pure black at low opacity — no colored or layered glows. This editorial flatness is intentional: depth theater would undercut the calm, trustworthy tone. In dark mode, elevation is communicated through lighter surface tints (#212121 → #2f2f2f) rather than shadow.
backdrop-filter: blur(12px) with a translucent white/dark background on scroll.#10a37f) sparingly — for the mark, active states, and key CTAs only#0d0d0d on white #ffffff; design dark mode as a first-class peer#e5e5e5) before reaching for shadow| Name | Width | Key Changes |
|---|---|---|
| Mobile | <640px | Single column, full-width composer, collapsed sidebar (drawer) |
| Tablet | 640–1024px | Sidebar toggleable, content column ~640px |
| Desktop | 1024–1440px | Persistent sidebar, centered ~768px conversation column |
| Wide | >1440px | Content stays centered at max-width; margins grow, not content |
#0d0d0d)#10a37f)#1a7f64#ffffff)#212121#2f2f2f#0d0d0d)#0d0d0d)#6e6e80)#9b9b9b)#e5e5e5)#10a37f)#ef4146)#f5a623)#10a37f is an accent for mark + active + key CTA — never a background wash#0d0d0d; teal is the brand-forward alternative#e5e5e5 borders over shadows for edges#212121 base, #2f2f2f raised, #ececec textOpenAI speaks like a thoughtful researcher who respects your intelligence: clear, plain, confident without hype. It avoids both corporate jargon and breathless "revolutionary" marketing. Sentences are short and declarative. Claims are measured — capabilities are described with their limits acknowledged. The voice is in American English, lowercase-comfortable in product microcopy, sentence case nearly everywhere (not Title Case).
| Context | Tone |
|---|---|
| CTAs | Plain imperative — "Get started", "Try ChatGPT", "Start building". Sentence case. |
| Product microcopy | Minimal, functional — "Send a message", "Regenerate", "Copy code". |
| Success states | Quiet and brief — "Copied", "Saved". No exclamation marks. |
| Error messages | Honest and specific — name what happened, offer a next step. Never blame the user. |
| Onboarding | Calm, one concept at a time. Acknowledges the tool's novelty without overhyping. |
| Capability claims | Measured — describe what the model does and its limitations. "may produce inaccurate information". |
| Documentation | Precise, example-first, second person ("you can…"). |
Forbidden tone. No hype superlatives ("game-changing", "revolutionary", "mind-blowing"), no fake urgency, no emoji in product chrome, no Title Case headings, no anthropomorphizing the model as a person with feelings. Safety and limitation language is never hidden — it is part of the honest voice.
OpenAI was founded in December 2015 as a nonprofit AI research lab by a group including Sam Altman, Elon Musk, Greg Brockman, Ilya Sutskever, and Wojciech Zaremba, with the stated mission to ensure that artificial general intelligence "benefits all of humanity." In 2019 it restructured into a "capped-profit" entity (OpenAI LP) to raise the capital needed for large-scale compute, taking a major investment from Microsoft.
The brand entered global consciousness with ChatGPT, launched November 30, 2022, which reached an estimated 100 million users within two months — among the fastest consumer-product adoptions in history. The product line spans GPT-series models, the DALL·E image models, the Whisper speech model, the API platform, and ChatGPT's consumer tiers (Free, Plus, Pro, Team, Enterprise).
The visual identity reflects the mission's gravity. Where competitors reached for the neon-gradient "sci-fi AI" aesthetic, OpenAI chose editorial restraint: black-on-white, a single teal accent, a custom humanist typeface, and whitespace as the dominant element. The 2025 rebrand — introducing OpenAI Sans by ABC Dinamo and refining the blossom/spiral mark — doubled down on this: a system that feels less like a tech product and more like a serious institution publishing serious work. The teal #10a37f is the one warm note in an otherwise monochrome world; it humanizes without shouting.
What OpenAI refuses: the visual hype-cycle of AI startups (glowing orbs, particle fields, purple-to-cyan gradients), the density of developer-tool dashboards, and the cuteness of consumer mascots. It occupies the space of a calm, credible authority — powerful technology presented quietly enough that you trust it.
#10a37f marks the brand and the moments of action. It never becomes a background, a wash, or decoration. Scarcity gives it meaning.Personas below are fictional archetypes informed by publicly described OpenAI user segments, not individual people.
Maya, 29, San Francisco. Full-stack engineer at a Series-B startup. Lives in the API platform and ChatGPT Plus. Switches between light docs and the dark playground all day. Cares that API keys and model IDs are monospace and copyable in one click, that the docs have runnable examples, and that rate-limit warnings are honest and specific. Distrusts marketing fluff; reads the model card limitations carefully before shipping.
David, 47, Chicago. Marketing director, non-technical, ChatGPT Plus subscriber. Uses ChatGPT daily to draft and refine copy. Values the calm, uncluttered composer — he's not intimidated by it the way he was by earlier "AI tools." Reads the model's output as if it were a document, not a chat. Notices and appreciates that the interface never shouts at him with badges and popups.
Priya, 22, Bangalore (using the US product in English). CS student, free-tier user, occasionally hits the upgrade prompt. Toggles dark mode always. Treats ChatGPT as a study partner and pair-programmer. The teal "New" badge and the occasional upgrade CTA are the only color she sees, and that scarcity makes them register. Expects mobile to be flawless — composer pinned to bottom, sidebar as a clean drawer.
| State | Treatment |
|---|---|
| Empty (new chat) | Centered, calm — the wordmark or a short greeting, the composer ready, and 3–4 suggestion chips (white bg, 1px #e5e5e5 border, pill). No illustration, no empty-state cartoon. |
| Empty (no results) | Single line of #6e6e80 secondary text ("No results found"). Optional ghost button to clear filters. |
| Loading (generating) | The signature blinking cursor / animated dots in the assistant column as text streams in token-by-token. Content appears progressively, never as a blocking spinner over the page. |
| Loading (page/data) | Skeleton blocks at #ececec matching final layout, subtle shimmer. Used in dashboards and the platform, not in the chat stream. |
| Streaming | Text renders incrementally with a soft caret; a "Stop generating" ghost button appears below. The user retains control mid-stream. |
| Error (inline field) | #ef4146 1px border, helper text below in #ef4146 13px. One specific, blameless sentence with a next step. |
| Error (generation failed) | Inline message in the assistant slot — "Something went wrong" with a "Retry" ghost button. Calm, never alarmist, never a full-screen takeover for a transient failure. |
| Error (rate limit) | Amber-toned banner (#fdf0d5 bg, #b8770f text) stating the limit and when it resets. Honest and specific, not apologetic boilerplate. |
| Success (copy/save) | Black toast ("Copied"), 3s auto-dismiss. No exclamation, no color celebration. |
| Disabled | Reduced contrast — #e5e5e5 fill, #9b9b9b text. Geometry unchanged so re-enabled state is stable. |
| Focus | 3px teal-tinted ring rgba(16,163,127,0.2) on inputs; subtle border darken on the composer. Always visible for keyboard users. |
| Selected (chat item) | Sidebar item gets #ececec (light) / #2f2f2f (dark) fill, no border — a quiet highlight, not a colored bar. |
Durations:
| Token | Value | Use |
|---|---|---|
motion-instant | 0ms | Theme toggle, immediate state flips |
motion-fast | 120ms | Hover, focus, button press, small fades |
motion-standard | 200ms | The default — menu open, card hover lift, tab switch |
motion-moderate | 300ms | Modal/sheet entrance, sidebar drawer slide |
motion-stream | per-token | Text streaming cadence — paced to feel like thinking, not a typewriter gimmick |
Easings:
| Token | Curve | Use |
|---|---|---|
ease-out | cubic-bezier(0.0, 0.0, 0.2, 1) | Things appearing — menus, modals, toasts |
ease-in | cubic-bezier(0.4, 0.0, 1, 1) | Things leaving — dismissals |
ease-standard | cubic-bezier(0.4, 0.0, 0.2, 1) | Two-way transitions — hovers, tab content, drawer |
Signature motions.
0 2px 8px rgba(0,0,0,0.08) shadow over motion-fast. Subtle, inviting, never bouncy.motion-standard with ease-out, anchored to their trigger. Dismissal is faster (motion-fast).prefers-reduced-motion: reduce, all transitions collapse toward motion-instant, streaming text appears in larger chunks rather than per-token animation, and scale/slide effects become simple fades. The product stays fully usable.OpenAI's interface is the visual argument that powerful technology should feel quiet. The canvas is uncompromising near-black-on-white (#0d0d0d text on #ffffff), with the signature teal-green (#10a37f) reserved almost exclusively for the moments that matter — the active state, the brand mark, a confirmation. There is no gradient theater, no glassmorphism, no drop-shadow drama. The page reads like a well-set book that happens to be interactive: generous margins, a single column of attention, type doing nearly all the expressive work.
Do and Don't guidelines parsed from DESIGN.md.
Do
Don't