Free Markdown Slides Maker

Write markdown, get a polished slide presentation. Separate slides with ---, add speaker notes, pick a theme, and present fullscreen. Export as a self-contained HTML file. 100% client-side, no signup.

Separate slides with ---
Write markdown to begin
Markdown Editor
Slide Preview

Your slides will appear here...

0 / 0
0 / 0

Need something more powerful?

Let us build it for you. Custom APIs, dashboards, automations — whatever you need.

Start a Project →
Open source

NexTool on GitHub

269 free tools. No signup. Open source. Built by Christian Bucher.

GitHub Browse 269 Free Tools →

Related Tools

CSS Box Shadow Generator · CSS Animation Generator - Free Tool · Emoji Picker & Search

Related Tools

Free Markdown Editor · Free JSON to YAML Converter · Free Accessibility Checker

Related Tools

Free JSON to YAML Converter · YAML to JSON Converter · Free API Request Builder

\n'; const blob = new Blob([exportDoc], { type: 'text/html' }); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'presentation.html'; a.click(); URL.revokeObjectURL(a.href); showToast('Exported presentation.html'); } /* SAMPLE */ function loadSample() { mdInput.value = '# Welcome to Markdown Slides\n\nCreate beautiful presentations with just markdown.\n\n**Powered by NexTool** -- 100% free, no signup.\n\n\n\n---\n\n## Features\n\n- Write slides in **markdown**\n- Separate slides with `---`\n- Multiple themes to choose from\n- Fullscreen presentation mode\n- Speaker notes support\n- Export as self-contained HTML\n\n\n\n---\n\n## Code Blocks\n\nFull syntax support for code examples:\n\n```javascript\nfunction greet(name) {\n return `Hello, ${name}!`;\n}\n\nconsole.log(greet("World"));\n```\n\n---\n\n## Formatting\n\nMarkdown slides support all common formatting:\n\n- **Bold text** for emphasis\n- *Italic text* for subtle emphasis\n- ~~Strikethrough~~ for corrections\n- `inline code` for technical terms\n- [Links](https://nextool.app) for references\n\n> "The best presentations are the ones that feel effortless."\n\n---\n\n## Images\n\nAdd images via URL:\n\n![Placeholder](https://placehold.co/600x300/6366f1/ffffff?text=Your+Image+Here)\n\nPerfect for diagrams, screenshots, and illustrations.\n\n---\n\n## Themes\n\nChoose from four built-in themes:\n\n1. **Dark** -- Sleek gradient headers\n2. **Light** -- Clean and professional\n3. **Corporate** -- Blue tones, structured\n4. **Creative** -- Pink and purple gradients\n\nSwitch themes from the toolbar above.\n\n---\n\n# Thank You!\n\nBuilt with NexTool -- the free online toolbox.\n\nPress **F** for fullscreen, or use arrow keys to navigate.\n\n'; updateLineCount(); currentSlide = 0; processSlides(); } /* TAB KEY */ mdInput.addEventListener('keydown', function(e) { if (e.key === 'Tab') { e.preventDefault(); const start = mdInput.selectionStart, end = mdInput.selectionEnd; mdInput.value = mdInput.value.substring(0, start) + ' ' + mdInput.value.substring(end); mdInput.selectionStart = mdInput.selectionEnd = start + 2; } }); /* TOAST */ function showToast(msg) { const t = document.getElementById('toast'); t.textContent = msg; t.classList.add('show'); setTimeout(() => t.classList.remove('show'), 2000); } /* FADE IN */ const observer = new IntersectionObserver(entries => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('visible'); observer.unobserve(entry.target); }}); }, { threshold: 0.1 }); document.querySelectorAll('.fade-in').forEach(el => observer.observe(el));