Files

97 lines
5.0 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Primary SEO -->
<title>Markdown Studio — Free Online Markdown Editor with Live Preview & PDF Export</title>
<meta
name="description"
content="Free online markdown editor with live side-by-side preview. Upload .md files, edit with syntax highlighting, and export to PDF, HTML, or Markdown. No sign-up, no server — your files never leave your browser."
/>
<meta name="robots" content="index, follow" />
<meta name="theme-color" content="#7f56d9" />
<!-- vite-ignore: with an unset VITE_SITE_URL the href is "/", which Vite's
HTML asset processing would try to read as a file (EISDIR). -->
<link rel="canonical" href="%VITE_SITE_URL%/" vite-ignore />
<!-- Icons & manifest -->
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="manifest" href="/site.webmanifest" />
<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Markdown Studio" />
<meta property="og:title" content="Markdown Studio — Free Online Markdown Editor with Live Preview" />
<meta
property="og:description"
content="Edit markdown with a live preview and export to PDF, HTML, or Markdown. Free, private, no sign-up — everything runs in your browser."
/>
<meta property="og:url" content="%VITE_SITE_URL%/" />
<meta property="og:image" content="%VITE_SITE_URL%/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Markdown Studio — edit markdown, preview live, export anywhere" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Markdown Studio — Free Online Markdown Editor with Live Preview" />
<meta name="twitter:description" content="Edit markdown with a live preview and export to PDF, HTML, or Markdown. Free, private, no sign-up." />
<meta name="twitter:image" content="%VITE_SITE_URL%/og-image.png" />
<!-- Structured data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Markdown Studio",
"url": "%VITE_SITE_URL%/",
"description": "Free online markdown editor with live side-by-side preview. Upload .md files, edit with syntax highlighting, and export to PDF, HTML, or Markdown.",
"applicationCategory": "UtilitiesApplication",
"operatingSystem": "Any",
"browserRequirements": "Requires JavaScript",
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
"featureList": [
"Upload and edit .md files",
"Live side-by-side markdown preview",
"GitHub-flavored markdown: tables, task lists, code highlighting",
"Export to PDF",
"Export to standalone HTML",
"Download edited Markdown",
"Dark mode",
"Local autosave — files never leave the browser"
]
}
</script>
</head>
<body class="size-full bg-primary antialiased">
<div id="root"></div>
<noscript>
<main style="max-width: 640px; margin: 80px auto; font-family: sans-serif; padding: 0 24px">
<h1>Markdown Studio — Online Markdown Editor with Live Preview</h1>
<p>
Markdown Studio is a free, browser-based markdown editor. Upload a .md file, edit it with syntax highlighting and a live rendered
preview, then export your document as PDF, standalone HTML, or Markdown. Your files are processed entirely in your browser and
never uploaded to a server.
</p>
<p>JavaScript is required to run the editor — please enable it and reload.</p>
</main>
</noscript>
<script type="module" src="/src/main.tsx"></script>
<script>
// On page load or when changing themes, best to add inline in `head` to avoid FOUC
// Must match the ThemeProvider's "ui-theme" storage key.
if (localStorage.getItem("ui-theme") === "dark" || (!localStorage.getItem("ui-theme") && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
document.documentElement.classList.add("dark-mode");
} else {
document.documentElement.classList.remove("dark-mode");
}
</script>
</body>
</html>