{
"url": "https://web.dev/",
"finalUrl": "https://web.dev/",
"statusCode": 200,
"cached": false,
"checkedAt": "2026-10-13T23:42:25.027Z",
"note": "Service workers and icon file reachability are not evaluated; only the page HTML and the manifest JSON are read.",
"found": true,
"manifestUrl": "https://web.dev/_pwa/web/manifest.json",
"manifestStatus": 200,
"page": {
"manifestLinks": 1,
"themeColorMeta": "#3740ff",
"viewport": "width=device-width, initial-scale=1",
"appleTouchIcon": true,
"https": true
},
"installability": {
"installable": true,
"blockers": []
},
"grade": "B",
"score": 86,
"summary": {
"errors": 0,
"warnings": 1,
"infos": 4
},
"manifestSummary": {
"name": "web.dev",
"shortName": "web.dev",
"id": null,
"startUrl": "https://web.dev/",
"scope": null,
"display": "standalone",
"displayOverride": null,
"orientation": "portrait",
"themeColor": "#3740ff",
"backgroundColor": "#fff",
"lang": null,
"dir": null,
"iconCount": 8,
"hasMaskableIcon": false,
"screenshotCount": 0,
"shortcutCount": 0
},
"icons": [
{
"src": "icons/icon-72x72.png",
"resolved": "https://web.dev/_pwa/web/icons/icon-72x72.png",
"sizes": "72x72",
"type": "image/png",
"purpose": "any"
},
{
"src": "icons/icon-96x96.png",
"resolved": "https://web.dev/_pwa/web/icons/icon-96x96.png",
"sizes": "96x96",
"type": "image/png",
"purpose": "any"
},
{
"src": "icons/icon-128x128.png",
"resolved": "https://web.dev/_pwa/web/icons/icon-128x128.png",
"sizes": "128x128",
"type": "image/png",
"purpose": "any"
},
{
"src": "icons/icon-144x144.png",
"resolved": "https://web.dev/_pwa/web/icons/icon-144x144.png",
"sizes": "144x144",
"type": "image/png",
"purpose": "any"
},
{
"src": "icons/icon-152x152.png",
"resolved": "https://web.dev/_pwa/web/icons/icon-152x152.png",
"sizes": "152x152",
"type": "image/png",
"purpose": "any"
},
{
"src": "icons/icon-192x192.png",
"resolved": "https://web.dev/_pwa/web/icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "icons/icon-384x384.png",
"resolved": "https://web.dev/_pwa/web/icons/icon-384x384.png",
"sizes": "384x384",
"type": "image/png",
"purpose": "any"
},
{
"src": "icons/icon-512x512.png",
"resolved": "https://web.dev/_pwa/web/icons/icon-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
}
],
"issues": [
{
"severity": "info",
"code": "description_missing",
"message": "No \"description\"; Chrome shows it in the richer install dialog and app stores use it."
},
{
"severity": "info",
"code": "id_missing",
"message": "No \"id\"; Chrome falls back to \"start_url\" as the app identity, so changing start_url later makes it a different app. Set an explicit \"id\"."
},
{
"severity": "info",
"code": "lang_missing",
"message": "No \"lang\"; screen readers and translation tools cannot tell the language of \"name\" and \"description\"."
},
{
"severity": "warning",
"code": "no_maskable_icon",
"message": "No icon with purpose \"maskable\"; Android launchers will shrink your icon onto a white circle or square instead of filling the adaptive shape."
},
{
"severity": "info",
"code": "screenshots_missing",
"message": "No \"screenshots\"; Chrome shows them in the richer install dialog, which improves installs."
}
]
}
curl --location --request GET 'https://zylalabs.com/api/14245/web+app+manifest+checker+api/35363/check+the+web+app+manifest+of+a+url?url=https://web.dev&fresh=1' --header 'Authorization: Bearer YOUR_API_KEY'
{
"grade": "C",
"score": 74,
"summary": {
"errors": 0,
"warnings": 2,
"infos": 6
},
"installability": {
"installable": true,
"blockers": []
},
"assumptions": {
"manifestUrl": "https://example.com/manifest.webmanifest",
"note": "Validated offline; the page HTTPS requirement is not evaluated."
},
"manifestSummary": {
"name": "My App",
"shortName": "App",
"id": null,
"startUrl": "https://example.com/",
"scope": null,
"display": "standalone",
"displayOverride": null,
"orientation": null,
"themeColor": null,
"backgroundColor": null,
"lang": null,
"dir": null,
"iconCount": 1,
"hasMaskableIcon": false,
"screenshotCount": 0,
"shortcutCount": 0
},
"icons": [
{
"src": "/icon-192.png",
"resolved": "https://example.com/icon-192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
}
],
"issues": [
{
"severity": "info",
"code": "description_missing",
"message": "No \"description\"; Chrome shows it in the richer install dialog and app stores use it."
},
{
"severity": "info",
"code": "id_missing",
"message": "No \"id\"; Chrome falls back to \"start_url\" as the app identity, so changing start_url later makes it a different app. Set an explicit \"id\"."
},
{
"severity": "info",
"code": "theme_color_missing",
"message": "No \"theme_color\"; the browser cannot tint the title bar to match your app."
},
{
"severity": "info",
"code": "background_color_missing",
"message": "No \"background_color\"; the splash screen will use a default background."
},
{
"severity": "info",
"code": "lang_missing",
"message": "No \"lang\"; screen readers and translation tools cannot tell the language of \"name\" and \"description\"."
},
{
"severity": "warning",
"code": "icon_512_missing",
"message": "No icon of at least 512x512 with purpose \"any\"; Chrome uses it for the splash screen and install dialog."
},
{
"severity": "warning",
"code": "no_maskable_icon",
"message": "No icon with purpose \"maskable\"; Android launchers will shrink your icon onto a white circle or square instead of filling the adaptive shape."
},
{
"severity": "info",
"code": "screenshots_missing",
"message": "No \"screenshots\"; Chrome shows them in the richer install dialog, which improves installs."
}
],
"checkedAt": "2026-10-13T18:16:06.181Z"
}
curl --location --request POST 'https://zylalabs.com/api/14245/web+app+manifest+checker+api/35364/validate+manifest+json+offline' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{"manifest":{"name":"My App","short_name":"App","start_url":"/","display":"standalone","icons":[{"src":"/icon-192.png","sizes":"192x192","type":"image/png"}]},"manifestUrl":"https://example.com/manifest.webmanifest"}'
Después de registrarte, a cada desarrollador se le asigna una clave de acceso a la API personal, una combinación única de letras y dígitos proporcionada para acceder a nuestro endpoint de la API. Para autenticarte con el Comprobador de manifiesto de aplicaciones web API simplemente incluye tu token de portador en el encabezado de Autorización.
| Encabezado | Descripción |
|---|---|
Autorización
|
Requerido
Debería ser Bearer access_key. Consulta "Tu Clave de Acceso a la API" arriba cuando estés suscrito.
|
Sin compromiso a largo plazo. Mejora, reduce o cancela en cualquier momento. La Prueba Gratuita incluye hasta 50 solicitudes.
Dale una URL de página y recibe un informe en JSON sobre el Manifiesto de la Aplicación Web de ese sitio: el manifiesto se localiza, se obtiene y se valida, y el resultado lista problemas codificados, una calificación general (A+ a F), una puntuación