Skip to content

Brand and logo assets

The marks, the palette, and the rules for using them. Everything here is free to use for editorial, educational, and community purposes under the terms further down the page.

SVG, 6 files, light and dark variants

The marks

The identity is a forward-leaning W cut by a band of negative space, set against an italic wordmark that leans with it. The monogram is not a badge beside the name, it is the W of WebJs, and one slice cuts the whole lockup as a single object. Every mark is greyscale.

Lockup

Lockup

The default. Use it wherever there is room for the full name: headers, footers, title slides, README banners.

webjs-lockup-on-dark.svg ↓
Lockup, light backgrounds

Lockup, light backgrounds

The same drawing with the ink flipped for a light surface. Use this file rather than a CSS invert, which flips the paper along with the ink.

webjs-lockup-on-light.svg ↓
Monogram

Monogram

For square and cramped placements: avatars, favicons, app icons, stickers, a multi-brand logo row.

webjs-monogram.svg ↓
Monogram, light backgrounds

Monogram, light backgrounds

The same tile inverted, for a light surface. Bare W files with no tile at all are in the download, for placing on a background of your own.

webjs-monogram-on-light.svg ↓

Clear space and minimum size

Both rules are expressed in one unit, the height of the monogram in the lockup. Call it W. Measuring against the mark itself means the rules hold at any scale without a table of pixel values.

Clear space around the lockup

Keep 1 W clear on every side

Nothing enters the shaded zone: no text, no rules, no other logo, no busy part of a photograph. When in doubt, give it more.

WebJs

24 px
monogram floor

96 px wide
lockup floor

Below the floor, switch marks

The lockup stops being readable under 96 px wide. Use the monogram instead of shrinking it further. The slice through the W thins out below 24 px and the mark degrades to a plain W, which is intended.

Do not distort

Scale proportionally. Never stretch, squash, skew, or rotate the mark, and never adjust the lean, which is already part of the drawing.

Do not recolour

Use a supplied variant. Do not apply your own gradient, drop shadow, or outline, and do not repaint the slice as a solid bar.

Do not redraw

Do not set the name in another typeface and call it the lockup, and do not rebuild the W from a font glyph.

Do not imply endorsement

The marks may not suggest that WebJs sponsors, reviews, or is affiliated with your project without written permission.

Colour

Dark is the primary theme and light is a translation of it, not a separate design. Neutrals carry the page: they hold a trace of warmth and nothing more. The marks are greyscale, so the palette below is the product's, not the identity's. Every chip is painted with the token it names.

Dark, the primary theme

Canvas --bg
Raised --bg-elev
Subtle --bg-subtle
Sunken --bg-sunken
Ink --fg
Ink muted --fg-muted
Ink subtle --fg-subtle
Line --border

Light, the translation

Canvas --bg
Raised --bg-elev
Subtle --bg-subtle
Sunken --bg-sunken
Ink --fg
Ink muted --fg-muted
Ink subtle --fg-subtle
Line --border

One accent, spent where it counts

A single warm amber fills the primary button and the closing call to action, and marks live and focus state. Those are the surfaces asking for a click. Everything else stays neutral, which is what makes them land. The marks themselves carry no colour at all, so the identity survives wherever the accent cannot go.

Dark

Electric Gold-Amber --accent
On accent --accent-fg
Live --accent-live

Light

Electric Gold-Amber --accent
On accent --accent-fg
Live --accent-live

Where it is allowed to appear

Primary action Everything else live state

Typography

Four faces, each with one job. The three brand faces are variable and self-hosted. The editorial serif is deliberately a system stack, so it costs zero bytes and renders in the reader's native voice.

Ag

Editorial serif

Hub titles, docs headings, and long-form pages. A system serif stack (ui-serif), the reading voice beside the geometric brand faces.

Ag

Inter Tight

Headlines and section headings, at weight 700 to 800 with tracking pulled to -0.03em.

Ag

Inter

Body prose, ledes, navigation, and everything in the documentation, at 1.6 line height.

Ag

JetBrains Mono

Code, terminal commands, token names, and version tags. Never used for running prose.

Writing the name

The name is a proper noun and takes one capitalisation, WebJs, everywhere it appears in prose. It stays lowercase only as a literal code token.

Correct

WebJs ships without a build step.
Most WebJs apps run on Node 24+ or Bun.
Run webjs dev to start.

Incorrect

WEBJS, WebJS, Webjs, web.js, Web JS

Lowercase is correct here

The CLI (webjs create), the packages (@webjsdev/core), the domain (webjs.dev), and the repository path. The lockup itself is set as WebJs, matching the prose.

Permission and trademark

The framework is MIT licensed. The marks are not covered by that licence, because a logo has to keep meaning one thing to be worth anything.

You may, without asking

Use the marks unmodified to refer to WebJs in articles, talks, documentation, courses, and comparisons. State that your project is built with WebJs, and link to this site.

Please ask first

Merchandise, a modified mark, a name or logo confusingly similar to this one, or any use that implies partnership, sponsorship, or official status.

If you are unsure, open a discussion on GitHub and ask. The answer is usually yes.