What's Changed
Highlights
🌐 **marimo runs in the browser — no backend required!**
This release makes it possible for marimo notebooks to run entirely in the browser, without a backend. Instead, Python is executed via WebAssembly and Pyodide.
This capability is a big step forward in making marimo notebooks easier to share. marimo-in-the-browser lets you share educational notebooks, tutorials, interactive blog posts, and more — without having to pay for a server.
You can see an example of marimo running in the browser by navigating to https://marimo.app.
To share your notebook as interactive static HTML, click the "Share WebAssembly notebook" link in the notebook action menu:

This will generate a URL at https://marimo.app that runs your notebook code in the browser. For example, here's a link to the [tutorial notebook, running via WebAssembly](https://marimo.app/?code=MQAgwg9gDgngTgSwOYAsAuIBMAGTAWEAWQENEBbCAOhAEEAbOkRVNAZyYFNWO4A3DgCaUAUAjJQIcDGVJiIw4QH1FSDgDsexNIMUB3BGhQgAvCABE2SgEZKADltnhxKFBMgZ5KjRcAKAJQKwgACzlCUAMYcDMICHABmIMr%2BAFzCIOkgYhJS7rIUIMTsFAoZ7lRkAj5moADqUeEQZBwgaBC5ngCEIIA8G4BQ%2B92AwvtmAaVwHGgArnBqZQA0gSEuEVF0MfGJij4UfqmlrHQIsXBuFJQTCJT7hzw%2BVrNYmCMZY5PTIFdH8wqLYZHRsQkkhR7h8eDs0hlThUfBDSuk4mZEbC4R45Jl2MQQAAqLFjYjhNAIfg4kAABRghggMzUEG0ACMIBAANYiZGlAAqKAQRQ4xDU7EMWhAEzUByZzTQcGIAgMCCpxEYNPpjKZrHuqPySo4DOZ7BxcBFbIyxAmrRkhPCCroMBJuhQ6hAMAgEzKMriMBa9rIIEkRvSCDU2ilBJA%2BkMIAAqgBJEBRDhNQNqkBiiVc9iguDJEAAbwzAF9WXCMtnqsAzCAANTmQblrHvA5HSi8BUTDh5v3mJGlJ7pF5TNQLULLBg%2BLmxRQNWLGdkGjgBAEbLYQcGlKGVDuIxxF9LshBQLOc7nogotU2SBAKkBanUskAATWdIEtM3CeO0judxwgumptO1KtYDs6Q9dQgwDJAQAAAw1NpBAMSCCgwQxmgaMgZDUARkwDDgRG3TstwyPwIitZ00H8ZE%2B2mQclj%2BOhR2uCcICnGdW3ndYgWXXZIXKdc8M3DtgFAGwQAAJV5AkiWaDgAA8OHCU05QHDsaHaNFrxVY8ZFiYVXAgBJWBkBgQDpOgIHCVUfQSclKRfJiUKtQQO1o1hC23GDOGldgnSmJ8VgxDDXSiAV7RAWIoHUWI1HCBAuAKCg1Ag5CyCzO11A4fg4A7TFaM9IUAWwjEQCQUy6UvZtEGIEzmmPA01HVPJ5DwnETTNLQEEtBgPVq1gSStXyGGCoUxjiHh1EiXKMHKi8qtcosxPxQleAMD1xQ4KAvM-EAoDgCAkClb1WDQLRmj5TDSKgU12ADd4YCi0MDCMbzjknDh5jwmQmXAkA4kkE8BFu4gyHaradr2wGgYS2M1CWna1ATJCUCFbb0tA9g6QmJA0fiSRUw4GAO0Rlx1Fw7d%2BO7Cjxn7ajfhWejxxe6dZzYwFNnCRGEsEdVOORGF3p43m8IyBEu0F9IcUACnIQAAOXajgOhJTlmmbOhW0sqC2b5VQBAQo8aV0HMNY5gQCxKUWQBqe0Zm8nSBGOzDkJAZXVb0z0ldkSq6GaSDDa1yD6s8DtSn1cTtAEElgKYEU1C%2BwwjxylrGjajrrXuOk5JNbhPTjlZA%2BeeJRqi2KHeKiBSsYKaPa9n3BEg2bBfmiSlrQED%2BSmIvEYwJ6rz-G93iO98jwVXRiBgQCzafKlWG5bRA3uO12qMOODWiy8fuOAQIC%2BpBGUw1horGjgAG5MjQAByDE6FYNo7S0XP0nUSuiga7vlV1Fo2g3iYqoKAVGUvgoAoFBcC5O%2B%2BEOw9jhAgBI1cBAdiCs0NcAtRZkzNjiPoIAADKHBmgGEyDMBailKAkijDMB2GhpIYFovcaurtHYtmaC7ZCoCK7f3VuzX278oIsQ4H7V2L4DjmVobVYyppWhqBJsgkWRYIEQMokpYIQ5aJrBZikZEMC3AADEFTcApq8F87DObU2HHRMcHBGLMSZsoxc2wuLpFOPiBocAZRUiQXCbMoCzC7n3LGWS8lCRUh9E4ngZgsyuPHig8eO4QqSCOGrZyPpSEhSgMQVQIBEbsBpMZXkiBIZUlAaUB2MSeB4NDFyNm-V-6kCkr400ggszuSZHrQaGBso50iXnaUX1MQsM9u4CYh1I74LiEGWhOVBQYFCvEAqJ9qCHjHu076YxYrW1aIEpAfIEAAC9mhdxeiUh2w8PTjNyOKYKCCICHXyRkbg-Jmhrw-BMCRkSImCwgaUds5NRiUyot8RRtNTHmI4IzViViOIrm4pQaEG4pFwhxAAcRKpeNQgNYpkH6RgNOwpo4AEdWxELrOyWCyLv54kbstf2aIsgXNisQJyk9JTEADBgAJKBvxXhRRiImpASnOSzJktAug2jxJkB6fKGhaGsBRR2HpOFoUEXSLI758ifjGLpmYhm3DmbWO5quKgDiYmKTCcWDxXisxjWcKwCYdA2pUhCSAI1kj5WRIAEIt0tOtK1bVIamSQMDa6cQRQSUntQ61rBuBJl%2BtZVlMwKACCtVwN6CzrbPncAGMQWzcZXgmGQNOX4EglzLnQiqVUrpW02upZkTzwkwrwm8jIHzCK6Kpr8mi-yGIassQuMFtiyiUH1U4w1HZ3HhNNSDIkx0i3TU9qwO1DrBYvPHgANXdiWkGUzZKYTDEYPkWKjh7xxgUMY5htrju0OWVZrSGAgkags5CHoU2YrFYIYyHo0V0EJFAXpzkq1mwXduOt6QG0KqbT8hRraRwAo7SCrtmwbHIkQXKwSWBqDRljJ7eGgEOxgD8k%2BHd51TR4KDAQ-gkYYxxgw9QEhRGJKQy3SeaMcD0OgWxFiBO5p2pWiOcwVQcAMk9w0jJOSCkqQ4hSpbDs1smWaBDHRzEqHyOgXuAYdgTscHpmY6VQRqyo1UnuKdOBGV70rAmpwEaYxC7NLQ-GZjR4xgAFpap11XM-baEAlqxEKgcOkUo4AehdvJpjiZOFs0ZJnOIO1vQiiOB2aCDUzgIFrnK5Eiq9FGKUTBpc4K7H8zMGg3omDGjNAC9ZxM%2BKQAzg9FJ4MhJaMPVoWnUy%2BsFOleGCB5Vfz-jsVgzqjI7UAmmFOOcSgAgdpQA3j%2BHwABtMwNZ7gzd6GYOb4szAAF17iqeMDNoYKX%2ByZAaHVNLOcMt9bqmULLnBwqEn8fyE4VAhsZluPcKwAA2e41qGvGARGobNua1bZhO02eheYsyta%2BXoi74xZTBsO51lRJ37hjEu1D-k534cQ6u4peZvYlUw9WMd-bXMEdrUh9d1g53EHVHMJWPbVJAcq2aHWRHJPMd05BWD5tYGaYQfbXZYFc5QXdfJ-zJLeEkMAGZqDuSPAAK3RWSCk0bTZFncvE5JvHmg6ZmD4U6CTrTy5sn4PTAV3IVoslUjsh0caYUKFtNu%2Bvo3fQQNOkAgAUAh9KaC6bBD3NEUEqRQeDwgq1iEIcr9oxjn27h2GQvqOo3UDMQaSTmMiK3twEuITvYqqA0FKUOL7VL5CqakDsdnYyFCdx6DKU8qTPro76tA9wYAxToDKSGEMxCXjdHELHcIS%2Be19d-e5DJwwoGzXyfymEZBswKsX76khzRHW-v0r6XdWgQEYC7ELstE1FhL-0yuP9U8zHeK%2BPcbA551dQ1ZjDLRiCfUhshBA694gmnfdK%2BhSZ9N4RL1SqQ%2B%2BI60jD1dHjXYCXCPQCWOWugdgDVeDnB-XSBeR21AxVVojVUBT5y1W7Xg2Fz4hrQyCQzwGoBEiji%2BlNwxE5XWiVxRGflINwxmE-m-ht1CBcnAAESZFoVCHugwjZRO32XtCAlpDNDs09mGU4W4FTF1n42ZBKTMA4KWg4F0EoEcA7CwT4BOhfn-CkMYPwRcHunDFi08EGQQiFAdlQnQgECEOwjgJAAAHloFPxuAG9HwU1%2BkEFn5ZcBlVlPZ%2BA6A7MJhXAnoOxTdwJz9KQCMUZjgPoulgErCEC2tcdUCoN%2BcMs4NdVIVeJSZEQkMABWWZEKfQuQBCUw06Cw8VVfVYDsHEMAN8LpAKOCGrCCUgsrCMHRGLSCSCKPZ%2BOo1o9ojsa6TEIMCGS8VZV8Xkd8TEDQfWE3SQpke4X0bojogwuo9Qm8SgWAeYjsYYt8DgAAeiWPGOmNwwYGfUglN1WJgESwqKxCILUGjkhkYOiJJGaI4EoNKDaPaPemfmEVOLWLwjeJeIyFWUOlIBaVDG1G4FUOOGOXBP4A2h8lNwPx3Q4OujxHMKpD11jVeg7Doz2XiTHEiiTzFixEgGhh4BBIACk-CKRilTiSRiSMpyTKSRl4SL188b0ix4Sl9IZ8j8h9t6TIIi9fi2iFi0ReTSSHk4BfdpjKA9xbo6QQAAA%2BcUxQIcH47cP4y49kM8CqS%2BMrFXQrdgZJcyFJGvOrSYVobU1gAU7cEvSCW2I6OIRrfksoMAmNBqCPNjJOHxITa7GfSCc4J01lfWVZFw0jK-VGX0jwJkcbNQAMtlVZXQRAd8SM6MkIxeQMHgCQa1XPVTcfO%2BAAGWIHZA4AAA1fTP1aRWBYz9Zyy0B6jQxJALJroYJfT09hC58tAqzWSI9Wy7l2yMBBU4BVR-j0gMEjoch%2BitSLxGA6NuS2gzTzwFRIJj57kZJAZP1MT5iPiDD5ztTQotBiAHTvx1i8ISECgBAZRrtOEdypykxdBmhEYSNVzxBndrpPwOxJtNo4UHov4LsIAVtRxaz1pkhtjtjdAwLKA68R86QIhGhtiYI7NtBAY4KGptjJRsFkKAxdjpI1zp0iIRdG12ckCOsTEecLFoMutMse0EMcCnVSgkNntcjXDFiLy5i8IAAJUab3d4QrFoPcX%2BNJKIfwx8VQDAIEqQE08MB2dyOoyQGImFRA9rcDPHCi4EXi9aIXPtcIRxZxNQHwD9MnOIltLnZSlRFIiFaEUsEADRAMTjPTb6EUb6BaUHPOVLIy1VSDXnTVAXSirAtIudP9KJZoZFJocwGCcsQeUzAucaFk5ucKNWBUdZVMLQe4KLHgDYkKZgdACeDCZHJMQPbNdad%2BESwA1ZNeb0TEAyPqVgKAMPZ4vCZOZ9TEMwdyCgMNYyK0MwagEgbSF2dw0ShlDCdgF2BK4gV6V2HRPCBrNzRqsNeMEyY0jEI9PaUY4pQURJZoS1b0Rhe0R-LaYEkBGi5LQyzndy0ioFLyjLc7fStwYdUmDBYgJaBKWdDxXAosHEe6x6pAHEYcnvRIKWFFf3LuDgzkxKEKBkaSRCWhVoXSBIB2PeJZU7X0dpGcsASUOgbYsACoCsSs6gB8F0FNbRIVLYk8YKxqnQ4wvg9pIogKA4DQe4HCJASge4Wc2MC8oBKAX3FFM4i48eEvRQD6sxPPQPdqO-UGjah6nBfbBJerAQxoZMeIevQJF9K5AMT3OsyCVGuAdGzGgQbG2uEAV1SZOIF-aQZ%2BOOKkdPJANuWBdpC9M8SVfgKw0oAKkAQ3Dca424pAZ66tWi7cYSRQa4k8Wif3COYW8yGOJJa1D0HwEAQAdtJXaRFayAlwCwbZayBQFMrmUEhL06BZjjgI5VbREvoNa0aMasaABRdMuAHms2TAagAOhyiqo6L9FYf3IW1giOnZFYNlYRdGJO0hOcyms2TOtWEwlYPOvPQu2s4uzW7Wiuqu-WlSHKbkUBIE3pVKGYZTCebSdJLJB0WNKBGKTCPul%2BQZAkuECXRIQOqq5ulCPyEO%2B9Du%2B-SOkee1OOhOvusRBJUBB2IfM0JgZALK7ajakY9QCeqeqCWesu3WjBLkYZCsaup2jIF2t2viYkq%2BXpawj3U0b239V6uEdBtfBhbBjAHwBmpmqCE9QMfwBCIE7QDDPwY8VgQMmYKa-WWlceWiJB%2BA-B1B0mKo0Y4IogNzIRnXAAETjDrOwwGlwcdVAX9oEeOn93GPkIqQKAZBI1%2BjYZPF9X4BmGr3bpFvAiuXSAdk-X6UTq-tWQdmEKztGXHtKQXnZuySGoHAWTKBDNZQynPtKDrsSEIGmuUbUb8KVujLzxGxSV9VyXWrSVOl6WsZChMYAZYFHpCioUcfKVCBcelooE8emrgB8YyEvsUAkc9m0CCZylDqfrFpaClGYeMmugBwNpyQggMCSc0zYKqaMefuaCizaE-uTpib-rlpHuAaSfhuwURuOBRtLp1orFgagTQArE2USx9vAW3zhDMDEe5A9i%2BmkcvlkfnXwdKDxtoNCh2YYLUaWn6LSeM3220AoXcHUBdB8GgAdDafHi6fDp6ZpwHqEUAbsZzqIlZPumiHHg0AykGT%2Bguc9kwhyl%2Bj5CMwGhMzCgimloMFyJXs4Z3XtDoFcGRj0ZaS0uuHj0YEEz8UUjVhknCn5EkgnnEFNBtX5FAQ3tZtlDuOWJVG4bAVrQ2edsgG0g0TXxby9tCRet9qLFOZTQaAYAtQYWOB%2Bmb1GTshKRzsMe%2BZqdIB2l0FARO1LVoVpqCp%2B2KRlezT%2BZsYVonojhBpAHFBgAZFIBtrNmYckDQD8RAVASeOVbQh12STKffB8BLq1ugYrCZEgkYYRdtbxgdacXeFZSkD8XflAVxRFr10VbOmOBFHTYKCMm-XFfWY3AFeaCFbgHn3AkOcOvHijASGtgfOaEm3mvMn-PQDQCApAsgq-hgrIG2PWjiG2MbaZEYYDDXthccPxp3TKqFDVa3R-pCjtZjd3njbdYIyDbnt1rpFWbwYlddr5eQcgB9YClJAVHGDPTFbWfHi9dXZDbDc4TeZiepswj9ZPdlXPf-V3fgIAGlo2IBHXMEl33WK2Mjt3SgwBWDaF52f3Y2Bn9Ghm075aRDgHj8Eb7UkazYIGr25mFn4GUBw3OE5D2GsIBlhqjIIPHXV7-3LpuWUH33zBiTLapgmXAPNnjn0g6PkA7cHYZL87H7umanVBSAropaNBuUHZoaHMAW75EOJniY75qPkQgNOBwd9KvhRAWZSblATBTAzBlAZAAxlAQlkQhxap-AgA).
These URLs are a bit long, since they encode the Python code of the notebook as a parameter. In the future, we'll add the ability to download your notebooks as WASM-based static HTML (e.g., `mynotebook.html`).
When running marimo in the browser via WASM, most but not all Python packages are supported. To learn more about which packages are supported, refer to the [Pyodide documentation](https://pyodide.org/en/stable/#what-is-pyodide).
---
* chore(deps): update all storybook dependencies to ^7.6.14 by renovate in https://github.com/marimo-team/marimo/pull/771
* fix: filewatcher uses absolute paths by mscolnick in https://github.com/marimo-team/marimo/pull/774
* internal: reduce logic in starlette routers by mscolnick in https://github.com/marimo-team/marimo/pull/769
* chore: move layout to _runtime folder by mscolnick in https://github.com/marimo-team/marimo/pull/777
* chore: slimmed down interfaces for streams by mscolnick in https://github.com/marimo-team/marimo/pull/776
* Document settings by akshayka in https://github.com/marimo-team/marimo/pull/784
* experimental: wasm/pyodide support by mscolnick in https://github.com/marimo-team/marimo/pull/780
* fix: tab re-render by mscolnick in https://github.com/marimo-team/marimo/pull/785
* improvement: show wasm option in static notebook dialog by mscolnick in https://github.com/marimo-team/marimo/pull/786
* 0.2.5 by akshayka in https://github.com/marimo-team/marimo/pull/787
**Full Changelog**: https://github.com/marimo-team/marimo/compare/0.2.4...0.2.5