Marko – A declarative, HTML‑based language
A declarative, HTML‑based language that makes building web apps fun.
Trusted
Powering high-traffic, production-grade websites like eBay.com
Familiar
If you know HTML, CSS, and JavaScript, you know Marko
Performant
Streaming, resumable, optimizing compiler, and a tiny runtime
Scalable
From simple HTML templates to powerful components as needed
HTML Re‑imagined
Marko is HTML re‑imagined as a language for building dynamic and reactive user interfaces.
Just about any valid HTML is valid Marko, but Marko extends the HTML language to allow building modern applications in a declarative way.Check it out!// HTML + JavaScript = 💜
<let/count=0>
<button onClick() { count++ }>
Clicked ${count} times
button>
// HTML + JavaScript = 💜
<let/count=0>
<button onClick() { count++ }>
Clicked ${count} times
button>
// HTML + JavaScript = 💜
let/count=0
button onClick() { count++ }
-- Clicked ${count} times
// HTML + JavaScript = 💜
let/count=0
button onClick() { count++ }
-- Clicked ${count} times
Faster First Paint
Marko streams content to your users as soon as it's ready. No waiting for client side JavaScript bundles or data requests to start rendering.
HTML, assets, and images are loaded as soon as possible with asynchronous content loading in as it completes.Learn How
Nintendo Switch 2 - $449.99
Nintendo Switch 2 - $449.99 streamed
Granular by Design
Why ship entire Islands for a few grains of sand? Marko ships only what's needed, skipping hydration and stripping unused code at the sub-template level.
Lean by default. Fast by design. Unrivaled performance on any device or network.Learn How
iPhone 16 Pro - $999
iPhone 16 Pro - $999 granular
Write Code, Right Code
Browsers and servers are built differently, shouldn't your code be too? Marko compiles your templates to perform their best with optimized, environment-specific output.
Faster loads. Smaller bundles. One seamless language.Learn HowStreamed HTML
for the server<div>Hello ${name}div><div>Hello ${name}div>div -- Hello ${name}div -- Hello ${name}Reactive DOM
for the browser
Types & Tooling
Marko has built-in TypeScript support , with strong type inference that works across templates and components. Editors get full language features like autocompletion, jump-to-definition, syntax highlighting, and clean formatting.
Build confidently. Catch errors early. Write better code, faster.Explore Need help? Want to Contribute? Get involved in the Marko Community!Hang out in our Discord server to ask questions & discuss markoTweet to @MarkoDevTeam or use the #markojs hashtagKeep up with the community on Bluesky at @markojs.comBrowse the code, open issues, & make pull requests on GitHub <divBuilt in HTML
>
Hop in, we've got tags
div>
<scriptBuilt in core tag.>
$elconst $el: () => HTMLDivElement
().const $el: () => HTMLDivElement
script><divBuilt in HTML
>
Hop in, we've got tags
div>
<scriptBuilt in core tag.>
$elconst $el: () => HTMLDivElement
().const $el: () => HTMLDivElement
script>divBuilt in HTML
-- Hop in, we've got tags
scriptBuilt in core tag. -- $elconst $el: () => HTMLDivElement
().const $el: () => HTMLDivElementdivBuilt in HTML
-- Hop in, we've got tags
scriptBuilt in core tag. -- $elconst $el: () => HTMLDivElement
().const $el: () => HTMLDivElementJoin the Community
What's Your Reaction?
Like
0
Dislike
0
Love
0
Funny
0
Angry
0
Sad
0
Wow
0