Marko

MarkoMarko

A declarative, HTML-based language
that makes building web apps fun

Familiar

If you know HTML, CSS, and Javascript, you know Marko

Performant

Streaming, partial hydration, an optimizing compiler, & a small runtime

Scalable

Start with simple HTML templates and add powerful components as needed

Trusted

Marko is powering high-traffic websites like ebay.com

HTML Reimagined

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.

<!doctype html>
<html>
<head>
    <title>Hello Marko</title>
</head>
<body>
    <h1>My favorite colors</h1>
    <ul>
        <for|color| of=["red", "green", "blue"]>
            <li style=`color:${color}`>
                ${color.toUpperCase()}
            </li>
        </for>
    </ul>
    <shared-footer/>
</body>
</html>
HTML Templates, Custom Tags, & Javascript Expressions
0
class {
  onCreate() {
    this.state = { count: 0 };
  }
  increment() {
    this.state.count++;
  }
}
<div>${state.count}</div>
<button on-click("increment")>
  Click me!
</button>
Interactive Logic & Reactive Values

Progressive Rendering

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 data loading in as it completes.

Code Elimination

Marko only sends the code for interactive components to the browser. Its compiler automatically detects which components only need to be rendered on the server. This means less to download and less to execute. Your users can enjoy top tier performance regardless of their devices or networks.

Tailored Performance

Marko's compiler generates code tailored to where it is going to run. You write your code once and it is optimized for both the server and browser. This is especially apparent on the server where Marko is several times faster than other popular solutions.

Editor Support

Marko provides first-class support for the VSCode editor including syntax highlighting, Autocompletion, Hyperclick to quickly jump to referenced files, and Pretty printing to keep your code readable.

Community plugins also provide syntax highlighting for Sublime, Atom, Webstorm & others!

Join the Community

Need help? Want to contribute? Get involved in the Marko Community!

Ask & answer StackOverflow questions with the marko tag
Hang out in our Discord server, ask questions, & discuss project direction
Tweet to @MarkoDevTeam or with the #markojs hashtag
Browse the code, open issues, & make pull requests on the GitHub repo
patrick-steele-idemDylanPierceymlrawlingsgithub-actions[bot]austinkelleherphilidemLuLaValvascttdavsrturnqagligatigtmabereryomedBhavinPatel04tcrowenewyork-anthonyngdependabot[bot]HesulankristianmandrupseangatesramahadevanaselvarajrumoursbehindmeSebringoxalactdiobrywatsonnnbkuriabiyasagreenkeeper[bot]vwongLokeshRishimerwan7kprakasamSandeepv68PersephoneQueenOfFlowersgitter-badgertimgates42zaisteccinellicodinggirllucas0707jasonmacdonalddimichghCestDiegogamtiqcabellodsathyakumarfierysunsetcameronbraidBryceEWatsonmilwormsamdup123sandro-pasqualisdepoldScottAwesomeSimenBsasyomarusnyamathirohit-gohrimillettepatricknelsonpcanellanitinsurananm123githubmikeshatchmelquanstowballnahtnamtinovyatkinmoonrailgunpedramphpunreadablekounelios13khaki32joelmagnerckeenan23agyanchandaganeshalingamachou11biasprozephraphwujjppcodeallthethingzVictorHomulivzthordyManoelLoboeugefwarnckeStarpTechdustinbrownmanbuddenicrotzChronovecc-ebaybriceburgdoowbBEN002621N50MN14
Chat in Marko's Discord Server