DOCUMENT TOOL

Markdown Slides

Write slides in Markdown, separate with ---, then present fullscreen or export as HTML.

Slide 1 / 1
1 slide
--- = new slide
1 / 1

Your slide preview will appear here...

Slide Overview
← → navigate F5 present
Empty
1
1 / 1 00:00
Copied!

Related Tools

\n\n'; var blob = new Blob([doc], { type: 'text/html' }); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = 'slides.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); showToast('Downloaded slides.html'); }; window.printSlides = function() { document.getElementById('export-menu').classList.add('hidden'); if (slides.length === 0) return; var themeCSS = getThemeCSS(currentTheme); var slidesHtml = ''; for (var i = 0; i < slides.length; i++) { var html = slides[i] ? marked.parse(slides[i]) : ''; slidesHtml += '\n'; } var w = window.open('', '_blank'); w.document.write('Slides' + slidesHtml + ''); w.document.close(); setTimeout(function() { w.print(); }, 500); }; window.copySource = function() { document.getElementById('export-menu').classList.add('hidden'); if (slides.length === 0) return; var html = ''; for (var i = 0; i < slides.length; i++) { html += slides[i] ? marked.parse(slides[i]) : ''; if (i < slides.length - 1) html += '\n
\n'; } navigator.clipboard.writeText(html).then(function() { showToast('HTML source copied!'); }); }; function getThemeCSS(theme) { var themes = { light: '.theme-light{background:#fff;color:#1a1a2e;}.theme-light .slide-content code{background:#f3f4f6;}.theme-light .slide-content pre{background:#1e1e2e;color:#cdd6f4;}.theme-light .slide-content th{background:#f9fafb;}.theme-light .slide-content th,.theme-light .slide-content td{border-color:#e5e7eb;}.theme-light .slide-content blockquote{background:#f9fafb;}.theme-light .slide-content a{color:#6366F1;}.theme-light .slide-content h1,.theme-light .slide-content h2{color:#1a1a2e;}', dark: '.theme-dark{background:#0f172a;color:#e2e8f0;}.theme-dark .slide-content code{background:#1e293b;color:#e2e8f0;}.theme-dark .slide-content pre{background:#020617;color:#e2e8f0;}.theme-dark .slide-content th{background:#1e293b;}.theme-dark .slide-content th,.theme-dark .slide-content td{border-color:#334155;}.theme-dark .slide-content blockquote{background:#1e293b;}.theme-dark .slide-content a{color:#818cf8;}.theme-dark .slide-content h1,.theme-dark .slide-content h2{color:#f1f5f9;}', solarized: '.theme-solarized{background:#fdf6e3;color:#657b83;}.theme-solarized .slide-content code{background:#eee8d5;color:#657b83;}.theme-solarized .slide-content pre{background:#002b36;color:#93a1a1;}.theme-solarized .slide-content th{background:#eee8d5;}.theme-solarized .slide-content th,.theme-solarized .slide-content td{border-color:#d3cbb7;}.theme-solarized .slide-content blockquote{background:#eee8d5;}.theme-solarized .slide-content a{color:#268bd2;}.theme-solarized .slide-content h1,.theme-solarized .slide-content h2{color:#073642;}', nord: '.theme-nord{background:#2e3440;color:#d8dee9;}.theme-nord .slide-content code{background:#3b4252;color:#d8dee9;}.theme-nord .slide-content pre{background:#242933;color:#d8dee9;}.theme-nord .slide-content th{background:#3b4252;}.theme-nord .slide-content th,.theme-nord .slide-content td{border-color:#4c566a;}.theme-nord .slide-content blockquote{background:#3b4252;}.theme-nord .slide-content a{color:#88c0d0;}.theme-nord .slide-content h1,.theme-nord .slide-content h2{color:#eceff4;}', dracula: '.theme-dracula{background:#282a36;color:#f8f8f2;}.theme-dracula .slide-content code{background:#44475a;color:#f8f8f2;}.theme-dracula .slide-content pre{background:#1e1f29;color:#f8f8f2;}.theme-dracula .slide-content th{background:#44475a;}.theme-dracula .slide-content th,.theme-dracula .slide-content td{border-color:#6272a4;}.theme-dracula .slide-content blockquote{background:#44475a;}.theme-dracula .slide-content a{color:#bd93f9;}.theme-dracula .slide-content h1{color:#ff79c6;}.theme-dracula .slide-content h2{color:#8be9fd;}', fixie: '.theme-fixie{background:linear-gradient(135deg,#1a1a2e 0%,#16213e 100%);color:#e2e8f0;}.theme-fixie .slide-content code{background:rgba(99,102,241,0.15);color:#c7d2fe;}.theme-fixie .slide-content pre{background:#0f0f1e;color:#e2e8f0;}.theme-fixie .slide-content th{background:rgba(99,102,241,0.1);}.theme-fixie .slide-content th,.theme-fixie .slide-content td{border-color:rgba(99,102,241,0.25);}.theme-fixie .slide-content blockquote{background:rgba(99,102,241,0.1);border-color:#FF6B6B;}.theme-fixie .slide-content a{color:#2DD4BF;}.theme-fixie .slide-content h1{background:linear-gradient(135deg,#FF6B6B,#6366F1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}.theme-fixie .slide-content h2{color:#2DD4BF;}' }; return themes[theme] || themes.light; } // ── Sample ── window.loadSample = function() { editorEl.value = STARTER; onEditorInput(); }; // ── Editor input handler ── function onEditorInput() { parseSlides(editorEl.value); renderPreview(); } editorEl.addEventListener('input', onEditorInput); // Tab key support editorEl.addEventListener('keydown', function(e) { if (e.key === 'Tab') { e.preventDefault(); var start = this.selectionStart; var end = this.selectionEnd; this.value = this.value.substring(0, start) + ' ' + this.value.substring(end); this.selectionStart = this.selectionEnd = start + 4; onEditorInput(); } }); // ── Keyboard shortcuts ── document.addEventListener('keydown', function(e) { if (presenterActive) { if (e.key === 'ArrowRight' || e.key === ' ') { e.preventDefault(); window.nextSlide(); } else if (e.key === 'ArrowLeft') { e.preventDefault(); window.prevSlide(); } else if (e.key === 'Escape') { e.preventDefault(); window.exitPresenter(); } else if (e.key === 'n' || e.key === 'N') { e.preventDefault(); window.togglePresNotes(); } return; } // Non-presenter shortcuts — only when not typing in editor if (document.activeElement === editorEl) return; if (e.key === 'ArrowRight') { e.preventDefault(); window.nextSlide(); } else if (e.key === 'ArrowLeft') { e.preventDefault(); window.prevSlide(); } else if (e.key === 'F5') { e.preventDefault(); window.enterPresenter(); } }); // ── Toast ── function showToast(message) { var toast = document.getElementById('toast'); toast.textContent = message; toast.classList.add('show'); setTimeout(function() { toast.classList.remove('show'); }, 2000); } // ── Init ── parseSlides(''); renderPreview(); })();