Skip to content

Manifest member in Manifest

name and short_name manifest members

Published

Limited availabilityNot supported in Firefox (Desktop)W3C

name is the full, human-readable label of a web app and short_name the label for places where the full one does not fit: the home-screen grid, the launcher, the taskbar, the app switcher. The specification makes both optional; Chromium’s installability check does not, it requires at least one of them before it offers to install.

Chrome 39, Edge 79, Samsung Internet 4.0, Firefox 79 on Android, Safari 11.3 on iOS, and Safari 17 on macOS read both members (BCD html.manifest.name, html.manifest.short_name). Firefox 157 on desktop installs no web apps from the manifest, so it reads neither. Per-language variants travel in name_localized and short_name_localized, which Chrome and Edge 148 apply.

  • Type: string for each. Plain text; HTML, emoji, and control characters are rendered literally or dropped by the OS, not interpreted.
  • Default: no default for name. When short_name is absent the browser uses name wherever it would have used short_name, truncating as the surface requires.
  • Example value: "name": "Acme Invoice Tracker", "short_name": "Invoices".

Where each label appears in Chromium: name in the install dialog, the splash screen, Windows Start and the macOS Applications folder, and in the window title; short_name under the icon on the Android home screen and the ChromeOS shelf, and in the Windows taskbar when pinned. Lighthouse’s manifest-short-name-length audit fails a short_name longer than 12 characters because the Android launcher truncates it, which is the practical length limit.

Chromium also uses the label as a security measure: for an app in standalone or fullscreen mode it prepends short_name (or name when short_name is absent) to the document’s <title> in window-switching surfaces, so a page cannot disguise itself as the OS or another app (web.dev). On iOS, the <meta name="apple-mobile-web-app-title"> tag, when present, wins over short_name for the Home Screen label.

A non-string value is dropped with property 'name' ignored, type string expected. (same for short_name), which can silently remove the one field installability depends on.

The three examples cover the minimal pair, a label chosen for the 12-character launcher budget, and the one runtime check a page can make.

A full name and a short label that fits the launcher

Section titled “A full name and a short label that fits the launcher”

The brand name goes in name; short_name is the word a user will recognize under a 48 px icon. Avoid “App” or “PWA” in either, the OS already knows it is an app.

{
"name": "Acme Invoice Tracker",
"short_name": "Invoices",
"start_url": "/",
"display": "standalone",
"icons": [{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }]
}

Invoices is eight characters, inside the Android launcher budget; Acme Invoice Tracker is what the install dialog, the Windows Start menu, and the window title show.

Keeping the window title readable in standalone mode

Section titled “Keeping the window title readable in standalone mode”

Because Chromium prefixes short_name to the window title in standalone mode, a page title that repeats the app name reads as Invoices - Invoices - March. Set the document title to the content only and let the browser add the app label.

function setWindowTitle(section) {
const standalone = matchMedia('(display-mode: standalone)').matches;
// Chromium adds the manifest short_name itself in a standalone window.
document.title = standalone ? section : `${section} · Acme Invoice Tracker`;
}
setWindowTitle('March');

In a browser tab the branch adds the brand back, so bookmarks and tab strips still identify the site.

Checking the shipped labels in a deployment test

Section titled “Checking the shipped labels in a deployment test”

Nothing at runtime reports the label the OS drew, but a test can assert that the deployed manifest carries a name, that short_name fits the launcher budget, and that neither contains markup. The fallback branch returns the problem rather than throwing, so the test output names the field.

export async function checkLabels(manifestUrl = '/manifest.webmanifest') {
const m = await fetch(manifestUrl).then((r) => r.json());
const problems = [];
if (typeof m.name !== 'string' || !m.name.trim()) problems.push('name missing');
if (typeof m.short_name === 'string' && m.short_name.length > 12) problems.push('short_name over 12 chars');
for (const key of ['name', 'short_name']) {
if (typeof m[key] === 'string' && /<[a-z]/i.test(m[key])) problems.push(`${key} contains markup`);
}
return problems;
}

Run it against the production origin after each deploy, alongside the icon and start URL checks the installability criteria entry describes.

Specifications

SpecificationStatus
Web App Manifest: name / short_nameW3C
Web Application Manifest: short_name memberW3C
  • Legend
  • Yes
  • Partial
  • Flag
  • No
  • Unknown
Browser / PlatformSupportVersionsConfidenceSourceNotes
Chrome (Desktop)Yes39highsource1
Chrome (Android)Yes39highsource23
Edge (Desktop)Yes79highsource45
Firefox (Desktop)No—highsource6
Firefox (Android)Yes79highsource—
Safari (macOS)Yes17highsource—
Safari (iOS)Yes11.3highsource—
Samsung InternetYes4.0highsource78
WebView (Android)Yes39highsource910
  1. `name` or `short_name` is required for a web app to be installable.
  2. `name` or `short_name` is required for a web app to be installable.
  3. Derived by browser-compat-data mirroring from Chrome.
  4. `name` or `short_name` is required for a web app to be installable.
  5. Derived by browser-compat-data mirroring from Chrome.
  6. No Firefox support is recorded in browser-compat-data.
  7. `name` or `short_name` is required for a web app to be installable.
  8. Derived by browser-compat-data mirroring from Chrome Android.
  9. `name` or `short_name` is required for a web app to be installable.
  10. Derived by browser-compat-data mirroring from Chrome Android.

Source data: /compatibility/manifest-name-short-name.json · Global usage: 92 % (StatCounter 2026-05)

Source: spec · MDN · Last verified 2026-10-03 · Confidence: high (computed from sources)