Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
492 lines (477 loc) · 26.2 KB
/
Copy pathindex.html
File metadata and controls
492 lines (477 loc) · 26.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
<!doctype html>
<!-- GENERATED by bin/build-pages.mjs from content/en/home.json -- edit the JSON, not this file. -->
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/icons/document.svg" />
<link rel="icon" type="image/png" sizes="32x32" href="/icons/document-32.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/icons/document-180.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="manifest" href="/manifest.json" />
<!-- Route split: this is a static landing page, /editor hosts the app. Deep
links that used to target it (?file= ?src= ?new= ?open=local ?embed=
?embedded= ?readonly ?agent) and any embedding iframe keep working:
hand them to /editor with the same query before anything renders. -->
<script>
(function () {
try {
var q = location.search;
var deep = /[?&](file|src|new|open|embed|embedded|readonly|agent)(=|&|$)/.test(q);
var framed = window.parent !== window;
if (deep || framed) {
location.replace('/editor' + (q || (framed ? '?embed=1' : '')) + location.hash);
}
} catch (e) {}
})();
</script>
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<title>Open DOCX, XLSX & PPTX in Your Browser — Free Document Viewer & Editor</title>
<meta name="description" content="Open, view and edit DOCX, XLSX, PPTX and CSV in your browser without Office or an account. Core editing requires no document upload; offline use depends on cached resources." />
<link rel="canonical" href="https://edit.chaxus.com/" />
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
<link rel="alternate" hreflang="en" href="https://edit.chaxus.com/" />
<link rel="alternate" hreflang="zh-CN" href="https://edit.chaxus.com/zh-CN/" />
<link rel="alternate" hreflang="ja" href="https://edit.chaxus.com/ja/" />
<link rel="alternate" hreflang="de" href="https://edit.chaxus.com/de/" />
<link rel="alternate" hreflang="es" href="https://edit.chaxus.com/es/" />
<link rel="alternate" hreflang="ko" href="https://edit.chaxus.com/ko/" />
<link rel="alternate" hreflang="pt" href="https://edit.chaxus.com/pt/" />
<link rel="alternate" hreflang="x-default" href="https://edit.chaxus.com/" />
<!-- No-flash theme restore: apply a forced light/dark before first paint so a
dark-mode visitor never sees a white flash. -->
<script>
try {
var t = localStorage.getItem('ran-theme');
if (t === 'dark' || t === 'light') {
document.documentElement.setAttribute('data-ran-theme', t);
document.documentElement.setAttribute('theme', t);
}
} catch (e) {}
</script>
<script src="/theme-presentation.js"></script>
<link rel="stylesheet" href="/ran-fonts/fonts.css" />
<link rel="stylesheet" href="/ran-tokens.css" />
<link rel="stylesheet" href="/home.css" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Online Document Editor" />
<meta property="og:locale" content="en_US" />
<meta property="og:locale:alternate" content="zh_CN" />
<meta property="og:locale:alternate" content="ja_JP" />
<meta property="og:locale:alternate" content="de_DE" />
<meta property="og:locale:alternate" content="es_ES" />
<meta property="og:locale:alternate" content="ko_KR" />
<meta property="og:locale:alternate" content="pt_BR" />
<meta property="og:title" content="Open-source document editor for you and AI agents" />
<meta property="og:description" content="Edit Word, Excel and PowerPoint locally; annotate PDFs. No signup or Office installation. Optional AI (Experimental Beta), WebMCP and PWA support." />
<meta property="og:url" content="https://edit.chaxus.com/" />
<meta property="og:image" content="https://edit.chaxus.com/social/document-editor-v1.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Online Document Editor: Word, Excel, PowerPoint and PDF; local editing, open source and no signup." />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="https://edit.chaxus.com/social/document-editor-v1.png" />
<meta name="twitter:image:alt" content="Online Document Editor: Word, Excel, PowerPoint and PDF; local editing, open source and no signup." />
<meta name="twitter:title" content="Open-source document editor for you and AI agents" />
<meta name="twitter:description" content="Edit Word, Excel and PowerPoint locally; annotate PDFs. No signup or Office installation. Optional AI (Experimental Beta), WebMCP and PWA support." />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "https://edit.chaxus.com/#website",
"name": "Online Document Editor",
"url": "https://edit.chaxus.com/",
"inLanguage": [
"en",
"zh-CN",
"ja",
"de",
"es",
"ko",
"pt"
]
},
{
"@type": "WebApplication",
"@id": "https://edit.chaxus.com/#app",
"name": "Online Document Editor",
"url": "https://edit.chaxus.com/",
"applicationCategory": "BusinessApplication",
"operatingSystem": "Any (web browser)",
"browserRequirements": "Requires a modern browser with WebAssembly support",
"isAccessibleForFree": true,
"inLanguage": [
"en",
"zh-CN",
"ja",
"de",
"es",
"ko",
"pt"
],
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"sameAs": [
"https://github.com/ranuts/document"
],
"isPartOf": {
"@id": "https://edit.chaxus.com/#website"
},
"description": "Open, view and edit DOCX, XLSX, PPTX and CSV in your browser without Office or an account. Core editing requires no document upload; offline use depends on cached resources.",
"featureList": [
"Open and view DOCX, XLSX, PPTX and CSV without Microsoft Office",
"Edit DOCX, XLSX, PPTX and CSV files",
"Local editing without required uploads",
"No account or sign-up required",
"Open documents from a URL via ?src= or ?file=",
"Offline with cached resources",
"Embeddable via postMessage API",
"Free and open source (AGPL-3.0)"
]
},
{
"@type": "WebPage",
"@id": "https://edit.chaxus.com/#webpage",
"url": "https://edit.chaxus.com/",
"name": "Open DOCX, XLSX & PPTX in Your Browser — Free Document Viewer & Editor",
"description": "Open, view and edit DOCX, XLSX, PPTX and CSV in your browser without Office or an account. Core editing requires no document upload; offline use depends on cached resources.",
"inLanguage": "en",
"isPartOf": {
"@id": "https://edit.chaxus.com/#website"
},
"about": {
"@id": "https://edit.chaxus.com/#app"
}
},
{
"@type": "FAQPage",
"@id": "https://edit.chaxus.com/#faq",
"inLanguage": "en",
"mainEntity": [
{
"@type": "Question",
"name": "Can it save back into my own file, or only download a copy?",
"acceptedAnswer": {
"@type": "Answer",
"text": "In Chrome, Edge and other browsers supporting the File System Access API, the first save asks you to choose a file and later saves write back to it. Other browsers download a copy. Export to another format with File → Download as. Recovery copies in the browser are separate from your saved file."
}
},
{
"@type": "Question",
"name": "Are my files uploaded anywhere?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Core opening, editing and conversion run locally in your browser without a required document upload. The AI assistant is off by default. Enable it in the editor; downloads and service connections start only when you choose them. An embedding host can receive exported files and upload them according to its own policy."
}
},
{
"@type": "Question",
"name": "Which formats can I edit?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Word (DOCX), Excel (XLSX), PowerPoint (PPTX) and CSV, using a WebAssembly engine in your browser."
}
},
{
"@type": "Question",
"name": "What happens if I close the tab or refresh the page?",
"acceptedAnswer": {
"@type": "Answer",
"text": "When autosave is enabled, recovery copies are kept in this browser’s IndexedDB for 7 days after the last edit or open. Closing a tab does not remove them. You can delete copies or disable autosave at /history. Browser storage can be cleared or evicted, and edits not yet autosaved may be lost; recovery is not a replacement for saving your file."
}
},
{
"@type": "Question",
"name": "Does it work offline?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Offline editing requires the application, editor engine, converter and relevant fonts and format resources to be cached and retained by your browser. One visit or PWA installation does not guarantee this. Remote file URLs require a network connection."
}
},
{
"@type": "Question",
"name": "Do I need an account?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No account, no sign-up, no email. Open the page and edit."
}
}
]
},
{
"@type": "SoftwareSourceCode",
"@id": "https://edit.chaxus.com/#source",
"name": "Online Document Editor",
"codeRepository": "https://github.com/ranuts/document",
"programmingLanguage": "TypeScript",
"license": "https://www.gnu.org/licenses/agpl-3.0.html",
"about": {
"@id": "https://edit.chaxus.com/#app"
}
}
]
}
</script>
<script src="/ranui-iife/button.iife.js" defer></script>
<script src="/ranui-iife/popover.iife.js" defer></script>
<script src="/ranui-iife/content.iife.js" defer></script>
<script src="/ranui-iife/theme-switch.iife.js" defer></script>
<script src="/lang-switch.js" defer></script>
<script src="/open-local.js" defer></script>
<script src="/landing-prefetch.js" defer></script>
<script src="/history-recent.js" defer></script>
</head>
<body>
<section id="landing-hero">
<header class="bar">
<div class="wrap">
<a class="brand" href="/"><span class="wordmark">Document Editor</span></a>
<nav>
<a class="navlink" href="/offline-document-editor">Offline</a>
<a class="navlink" href="/no-signup-document-editor">No sign-up</a>
<a class="navlink gh" href="https://github.com/ranuts/document" rel="noopener" target="_blank">
GitHub
</a>
<r-popover class="lang-menu" placement="bottom" trigger="click" role="button" aria-label="Language: English"><span class="lang-trigger"><svg class="langmark" aria-hidden="true" viewBox="0 0 16 16"><circle cx="8" cy="8" r="6.25" fill="none" stroke="currentColor" stroke-width="1.5"></circle><path d="M1.75 8h12.5M8 1.75c1.7 1.8 2.6 3.9 2.6 6.25S9.7 12.45 8 14.25M8 1.75c-1.7 1.8-2.6 3.9-2.6 6.25s.9 4.45 2.6 6.25" fill="none" stroke="currentColor" stroke-width="1.2"></path></svg><span class="lang-current">English</span><svg class="lang-caret" aria-hidden="true" viewBox="0 0 12 12"><path d="M2.75 4.5 6 7.75 9.25 4.5" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><r-content><div class="lang-list"><a class="lang-option" href="/de/" lang="de" hreflang="de">Deutsch</a><a class="lang-option is-current" href="/" lang="en" hreflang="en" aria-current="page">English</a><a class="lang-option" href="/es/" lang="es" hreflang="es">Español</a><a class="lang-option" href="/pt/" lang="pt" hreflang="pt">Português</a><a class="lang-option" href="/zh-CN/" lang="zh-CN" hreflang="zh-CN">中文</a><a class="lang-option" href="/ja/" lang="ja" hreflang="ja">日本語</a><a class="lang-option" href="/ko/" lang="ko" hreflang="ko">한국어</a></div></r-content></r-popover>
</nav>
</div>
</header>
<main>
<div class="hero wrap">
<div class="hero-copy">
<span class="chip reveal d1"><span class="dot"></span>Local-first · <b>open source</b></span>
<h1 class="reveal d2">Open Word, Excel & PowerPoint files, <span class="accent">right in your browser.</span></h1>
<p class="sub reveal d3">Open, view and edit DOCX, XLSX, PPTX and CSV in your browser without Office or an account. Core editing requires no document upload; offline use depends on cached resources.</p>
<div class="cta reveal d4">
<r-button type="primary" id="hero-open" data-open-local="/editor?locale=en&open=local">Open a file</r-button>
<a href="/editor?locale=en&new=docx" data-prefetch="docx"><r-button id="hero-new-docx">New Word</r-button></a>
<a href="/editor?locale=en&new=xlsx" data-prefetch="xlsx"><r-button id="hero-new-xlsx">New Excel</r-button></a>
<a href="/editor?locale=en&new=pptx" data-prefetch="pptx"><r-button id="hero-new-pptx">New PowerPoint</r-button></a>
</div>
<!-- Autosave is a promise about the user's data, so it is served HTML
rather than drawn by script: the retention window and the way to
inspect and delete what is kept are visible to a first-time
visitor, to a crawler, and with JavaScript off. -->
<div class="recent reveal d5">
<span data-recent-slot data-recent-label="Continue editing" hidden></span>
<span class="recent-note">Recovery copies stay in this browser for 7 days after the last edit or open when autosave is enabled. Delete them or turn autosave off in Saved documents. Browser storage can be cleared; save your file too.</span>
<a class="recent-all" href="/history?locale=en"
>Saved documents</a
>
</div>
<div class="trust reveal d5"><span>Local editing</span><span>no account</span><span>Offline with cached resources</span><span>.docx .xlsx .pptx .csv</span></div>
</div>
<!-- Decorative "document being edited locally" window -- pure CSS, no JS. -->
<div class="docwin reveal d3" aria-hidden="true">
<div class="dw-bar">
<span class="dw-dots"><i></i><i></i><i></i></span>
<span class="dw-file">report.docx</span>
<span class="dw-badge">saved locally ✓</span>
</div>
<div class="dw-tabs"><span class="on">.docx</span><span>.xlsx</span><span>.pptx</span><span>.csv</span></div>
<div class="dw-body">
<div class="dw-sheet">
<span class="dl t"></span>
<span class="dl w92"></span>
<span class="dl w78"></span>
<p class="dw-text"><mark>Local editing without required uploads</mark><i class="caret"></i></p>
<span class="dl w85"></span>
<span class="dl w60"></span>
<span class="dl t2"></span>
<span class="dl w88"></span>
<span class="dl w92"></span>
<span class="dl w70"></span>
</div>
<aside class="dw-note">
<b>You · just now</b>
<span>Local editing without required uploads</span>
</aside>
</div>
<div class="dw-net"><i class="ok"></i>Local editing</div>
</div>
</div>
<div class="section wrap">
<div class="section-head">
<span class="eyebrow">Open a file</span>
<h2>No Office installed? No problem.</h2>
</div>
<div class="index">
<a class="row" href="/open/docx">
<span class="ext">.docx</span>
<span class="name">Open DOCX</span>
<span class="desc">Word documents with fonts, tables and images intact.</span>
<span class="go" aria-hidden="true">→</span>
</a>
<a class="row" href="/open/xlsx">
<span class="ext">.xlsx</span>
<span class="name">Open XLSX</span>
<span class="desc">Formulas, charts and multiple sheets, fully rendered.</span>
<span class="go" aria-hidden="true">→</span>
</a>
<a class="row" href="/open/pptx">
<span class="ext">.pptx</span>
<span class="name">Open PPTX</span>
<span class="desc">Slides with layouts, themes and media preserved.</span>
<span class="go" aria-hidden="true">→</span>
</a>
<a class="row" href="/open/pdf">
<span class="ext">.pdf</span>
<span class="name">Open PDF</span>
<span class="desc">Read, comment and annotate, then save it back.</span>
<span class="go" aria-hidden="true">→</span>
</a>
<a class="row" href="/open/odt">
<span class="ext">.odt .ods .odp</span>
<span class="name">Open OpenDocument</span>
<span class="desc">LibreOffice formats — save back as ODT, DOCX or PDF.</span>
<span class="go" aria-hidden="true">→</span>
</a>
<a class="row" href="/convert/docx-to-pdf">
<span class="ext">.docx → .pdf</span>
<span class="name">Convert to PDF</span>
<span class="desc">Word, Excel and PowerPoint become PDFs on your device.</span>
<span class="go" aria-hidden="true">→</span>
</a>
<a class="row" href="/convert/xlsx-to-csv">
<span class="ext">.xlsx → .csv</span>
<span class="name">Convert between formats</span>
<span class="desc">Spreadsheets to CSV and back, without uploading a byte.</span>
<span class="go" aria-hidden="true">→</span>
</a>
</div>
</div>
<section class="section wrap assistant-feature" aria-labelledby="assistant-heading">
<div class="assistant-feature-copy">
<span class="eyebrow">AI document assistant</span>
<h2 id="assistant-heading">Make your writing clearer. Keep the decision yours.</h2>
<p>Select a passage to rewrite, summarize or translate. Review the result before adding it to your document.</p>
<a class="assistant-guide" href="/ai-document-assistant">How to use it →</a>
</div>
<div class="assistant-feature-example"><span>Off by default · This browser only</span><blockquote>Make this paragraph shorter. Keep all dates and numbers.</blockquote></div>
</section>
<div class="section wrap">
<div class="section-head">
<span class="eyebrow">Why it's different</span>
<h2>Private by design, not by promise</h2>
</div>
<div class="pillars">
<div class="pillar">
<span class="k">Local editing</span>
<h3>Local editing without required uploads</h3>
<p>Core opening, editing and conversion run locally in your browser without a required document upload.</p>
</div>
<div class="pillar">
<span class="k">No account</span>
<h3>Nothing to sign up for</h3>
<p>No email, no login wall. Open the page and start editing immediately.</p>
</div>
<div class="pillar">
<span class="k">PWA · offline</span>
<h3>Offline with cached resources</h3>
<p>Cached editing resources can work offline; remote file URLs need a connection.</p>
</div>
<div class="pillar">
<span class="k">AGPL-3.0</span>
<h3>Open source & self-hostable</h3>
<p>Audit exactly what runs, or host your own copy.</p>
</div>
</div>
</div>
<div class="section wrap">
<div class="section-head">
<span class="eyebrow">Process</span>
<h2>How it works</h2>
</div>
<div class="steps">
<div class="step">
<div class="n">01</div>
<h3>Open a file</h3>
<p>Drop in a DOCX, XLSX, PPTX or CSV — or start a blank one.</p>
<span class="loc">stays on device</span>
</div>
<div class="step">
<div class="n">02</div>
<h3>Edit for real</h3>
<p>Full formatting, tables, charts and formulas in your browser.</p>
<span class="loc">stays on device</span>
</div>
<div class="step">
<div class="n">03</div>
<h3>Save it back</h3>
<p>Save into your own file or download a copy.</p>
<span class="loc">stays on device</span>
</div>
</div>
</div>
<div class="section wrap faq-sec">
<div class="section-head">
<span class="eyebrow">FAQ</span>
<h2>Questions, answered</h2>
<p class="head-note">Longer answers — file size limits, error codes, self-hosting — are in the <a href="/help">help pages</a>.</p>
</div>
<div class="faq">
<div class="qa">
<details open>
<summary>Can it save back into my own file, or only download a copy?</summary>
<p class="a">In Chrome, Edge and other browsers supporting the File System Access API, the first save asks you to choose a file and later saves write back to it. Other browsers download a copy. Export to another format with File → Download as. Recovery copies in the browser are separate from your saved file.</p>
</details>
<details>
<summary>Are my files uploaded anywhere?</summary>
<p class="a">Core opening, editing and conversion run locally in your browser without a required document upload. The AI assistant is off by default. Enable it in the editor; downloads and service connections start only when you choose them. An embedding host can receive exported files and upload them according to its own policy.</p>
</details>
<details>
<summary>Which formats can I edit?</summary>
<p class="a">Word (DOCX), Excel (XLSX), PowerPoint (PPTX) and CSV, using a WebAssembly engine in your browser.</p>
</details>
<details>
<summary>What happens if I close the tab or refresh the page?</summary>
<p class="a">When autosave is enabled, recovery copies are kept in this browser’s IndexedDB for 7 days after the last edit or open. Closing a tab does not remove them. You can delete copies or disable autosave at /history. Browser storage can be cleared or evicted, and edits not yet autosaved may be lost; recovery is not a replacement for saving your file.</p>
</details>
<details>
<summary>Does it work offline?</summary>
<p class="a">Offline editing requires the application, editor engine, converter and relevant fonts and format resources to be cached and retained by your browser. One visit or PWA installation does not guarantee this. Remote file URLs require a network connection.</p>
</details>
<details>
<summary>Do I need an account?</summary>
<p class="a">No account, no sign-up, no email. Open the page and edit.</p>
</details>
</div>
</div>
</div>
</main>
<footer class="foot wrap">
<span>© 2026 Document Editor · runs on your device</span>
<nav>
<a href="/help">Help</a>
<a href="/changelog">Changelog</a>
<a href="/private-document-editor">Privacy</a>
<a href="/offline-document-editor">Offline editor</a>
<a href="/no-signup-document-editor">No sign-up</a>
<a href="/open/docx">Open DOCX</a>
<a href="/open/odt">ODT</a>
<a href="/open/ods">ODS</a>
<a href="/open/odp">ODP</a>
<a href="/convert/docx-to-pdf">DOCX → PDF</a>
<a href="/convert/xlsx-to-csv">XLSX → CSV</a>
<a href="/onlyoffice-online-free">Editor details</a>
<a href="https://github.com/ranuts/document">GitHub</a>
</nav>
<r-theme-switch class="theme-switch" label="Theme"></r-theme-switch>
<span class="lic">AGPL-3.0</span>
<p class="tm">ONLYOFFICE is a trademark of Ascensio System SIA. This site is not an official ONLYOFFICE product and is not affiliated with or endorsed by Ascensio System SIA.</p>
</footer>
</section>
<!-- Registers the service worker (so the landing works offline / installs as
an app) and promotes a waiting one, which is what makes a deploy reach a
returning visitor. See public/sw-register.js. -->
<script src="/sw-register.js" defer></script>
</body>
</html>