Source
This app’s code and revision history are public. Download a copy or explore the files below.
Public
The app’s code and revision history are public.
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone e8a688fd21351d04b05468df
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Habits: free habit tracker with streaks, no subscription | OpenApps</title>
<meta name="description" content="A free habit tracker with streaks, a calendar and a year of history. No subscription, no sign-up and no limit on habits. A free alternative to Streaks, Habitica and HabitNow premium.">
<link rel="canonical" href="https://habits-free.openapps.xyz/">
<meta property="og:type" content="website">
<meta property="og:site_name" content="OpenApps">
<meta property="og:title" content="Habits: a free habit tracker with streaks">
<meta property="og:description" content="Check off habits in one tap, keep your streaks, and see your year at a glance. Free, with no subscription, no sign-up and no habit limit.">
<meta property="og:url" content="https://habits-free.openapps.xyz/">
<meta property="og:image" content="https://openapps.free/og/habits.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="theme-color" content="#fdfdfc">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png">
<link rel="manifest" href="/manifest.webmanifest">
<meta name="apple-mobile-web-app-title" content="Habits">
<link rel="alternate" type="text/plain" title="llms.txt" href="/llms.txt">
<link rel="alternate" type="text/markdown" href="/index.md">
<link rel="preload" href="/fonts/NewsreaderVariable-var.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/ArchivoVariable-var.woff2" as="font" type="font/woff2" crossorigin>
<link rel="stylesheet" href="/kit.css">
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"SoftwareApplication","name":"Habits by OpenApps","applicationCategory":"LifestyleApplication","operatingSystem":"Web, Android, iOS (installable web app)","url":"https://habits-free.openapps.xyz/","description":"A free habit tracker with streaks, counted habits, days-without habits, a month calendar and a year heatmap for every habit, a week view, calendar reminders and one habit shared with a friend. No subscription, no sign-up and no limit on habits.","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"isAccessibleForFree":true,"publisher":{"@type":"Organization","name":"OpenApps","url":"https://openapps.xyz"}}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[
{"@type":"Question","name":"Is Habits really free?","acceptedAnswer":{"@type":"Answer","text":"Yes. There is no paid plan, no ads, no tracking and no limit on habits. Each check-in is a tiny write that costs almost nothing, and OpenApps pays for it."}},
{"@type":"Question","name":"Do I need an account?","acceptedAnswer":{"@type":"Answer","text":"No. Add a habit and start checking it off. Your habits are saved in your browser and in a guest account made for it. To keep them on your phone and laptop, sign in with your email, and Habits copies them into your account."}},
{"@type":"Question","name":"How is Habits different from Streaks?","acceptedAnswer":{"@type":"Answer","text":"Streaks has no free version: it is a one-time $5.99 purchase on the App Store, for Apple devices only, with up to 24 tasks a day, as reported in 2026. Habits is free, works in any browser on iPhone, Android or a computer, and has no habit limit. Streaks has apps for Apple Watch and Mac; Habits does not."}},
{"@type":"Question","name":"Is Habits a good Habitica alternative?","acceptedAnswer":{"@type":"Answer","text":"If you want the habits without the game, yes. Habitica turns your habits into a role-playing game and sells an optional subscription, reported at $4.99 a month or $47.99 a year in 2026. Habits has no avatars or gold: just your habits, streaks and history, free."}},
{"@type":"Question","name":"Can Habits remind me?","acceptedAnswer":{"@type":"Answer","text":"Not by itself. A web page cannot reliably send reminders on its own without a server, so Habits does not pretend to. On each habit's page, Add a reminder to my calendar makes a repeating calendar event on the habit's schedule, and your calendar reminds you."}},
{"@type":"Question","name":"How are streaks counted?","acceptedAnswer":{"@type":"Answer","text":"Streaks follow the schedule. Every day: days in a row. Chosen weekdays: those days in a row, and days off never break it. Times a week: weeks in a row where you reach the number. Every few days: times in a row you did it in each stretch. Days without: days since your last slip. Today never breaks a streak before it is over."}},
{"@type":"Question","name":"Who can see my habits?","acceptedAnswer":{"@type":"Answer","text":"Only you. If you share a habit with a friend, the people with that link see your name and your streak for that one habit, and nothing else."}},
{"@type":"Question","name":"Can I export my habits?","acceptedAnswer":{"@type":"Answer","text":"Yes. Settings has Download CSV, with every check-in, count and note, ready for any spreadsheet."}}
]}
</script>
<link rel="stylesheet" href="/openapp-community.css">
</head>
<body>
<header class="site-head">
<div class="wrap">
<a class="brand" href="https://openapps.free/" aria-label="OpenApps free apps">
<img src="/logo.svg" alt="" width="26" height="26">
<span class="brand-word">OpenApps</span>
</a>
<span class="brand-sep" aria-hidden="true">/</span>
<a class="brand brand-app" href="/">Habits</a>
<nav class="site-nav landing-only" aria-label="Main">
<a class="nav-optional" href="/#how">How it works</a>
<a class="nav-optional" href="/#compare">Compare</a>
<a class="nav-optional" href="https://openapps.free/apps">Free apps</a>
<a class="nav-cta" href="/today">Open Habits</a>
</nav>
<div id="app-nav"></div>
</div>
</header>
<aside id="openapp-community" aria-label="Help improve this OpenApp"><div><span>This is an <a href="https://beta.openapps.xyz/a/habits_free" target="_blank" rel="noopener noreferrer">OpenApp</a>.</span> <a href="https://beta.openapps.xyz/a/habits_free/discussion" target="_blank" rel="noopener noreferrer">Suggest a change</a><span aria-hidden="true"> · </span><a href="https://beta.openapps.xyz/a/habits_free/source" target="_blank" rel="noopener noreferrer">View source & contribute</a></div></aside>
<main>
<div id="app"></div>
<section class="app-hero landing-only">
<div class="wrap app-hero-grid">
<div class="hero-text">
<img class="art hero-art" src="/art/card-habits.webp" alt="" width="220" height="194">
<p class="eyebrow">Free alternative to Streaks</p>
<h1 class="display">Track your habits for free. Keep the streak going.</h1>
</div>
<div class="hero-more">
<p class="lede">Check off habits in one tap, watch your streaks grow, and see your whole year at a glance. No subscription, no sign-up and no limit on habits.</p>
<ul class="hero-points">
<li>Every day, some weekdays, a few times a week, or every few days</li>
<li>Yes or no habits, counted habits, and days without</li>
<li>Share one habit with a friend and see each other's streak</li>
</ul>
</div>
<div id="start">
<div class="start card">
<p class="start-title">Start a habit now</p>
<p class="muted small">One tap adds it. No sign-up, no app store.</p>
<p><a class="btn btn-lg btn-block" href="/today">Open Habits</a></p>
<noscript><p class="notice">Habits needs JavaScript to track your habits.</p></noscript>
</div>
</div>
</div>
</section>
<section class="section landing-only" id="how">
<div class="wrap">
<h2 class="h2">How it works</h2>
<ol class="steps">
<li><h3>Add a habit</h3><p>Pick how often: every day, chosen weekdays, a number of times a week, or every few days. Count glasses or pages if you like.</p></li>
<li><h3>Check it off</h3><p>One tap on Today marks it done, and one more undoes it. Your streak, best streak and completion rate update right away.</p></li>
<li><h3>See your progress</h3><p>Every habit gets a month calendar and a year of days. The week view shows all your habits side by side.</p></li>
</ol>
</div>
</section>
<section class="section-tight landing-only">
<div class="wrap">
<h2 class="h2">Everything a habit tracker needs, free</h2>
<ul class="features">
<li><h3>Streaks that follow your schedule</h3><p>Days in a row for daily habits, weeks in a row for "3 times a week". A day you did not plan never breaks a streak.</p></li>
<li><h3>Counted habits</h3><p>8 glasses of water, 10 pages, 30 push-ups. Tap to add one; it counts as done when you reach your goal.</p></li>
<li><h3>Days without</h3><p>For habits you are quitting. Habits counts the days since your last slip and remembers your best run.</p></li>
<li><h3>A friend to keep you going</h3><p>Share one habit by link. You both see each other's streak for it, live. Nothing else is shared.</p></li>
<li><h3>Reminders in your calendar</h3><p>A web page cannot reliably remind you without a server, so Habits adds a repeating event to your calendar instead. Your phone does the reminding.</p></li>
<li><h3>Yours to keep</h3><p>Notes on any day, reorder and archive, a CSV download of everything, and email sign-in when you want your habits on every device.</p></li>
</ul>
</div>
</section>
<section class="section-tight landing-only" id="compare">
<div class="wrap">
<h2 class="h2">A habit tracker with no subscription</h2>
<p class="lede" style="margin-top:14px">Checking off a glass of water should not need a paid plan. Habits is free because it costs almost nothing to run: a check-in is one tiny write, and OpenApps pays for it.</p>
<div class="table-wrap" style="margin-top:24px">
<table class="table compare">
<thead><tr><th scope="col"></th><th scope="col">Habits</th><th scope="col">Streaks</th><th scope="col">Habitica</th><th scope="col">HabitNow</th></tr></thead>
<tbody>
<tr><td>Price</td><td class="yes">Free</td><td class="no">$5.99 one-time, no free version</td><td>Free, optional subscription from $4.99 a month or $47.99 a year</td><td>Free, with a one-time premium upgrade</td></tr>
<tr><td>Habit limit</td><td class="yes">None</td><td class="no">Up to 24 tasks a day</td><td>None reported</td><td class="no">Free version reported at 5 to 7 habits</td></tr>
<tr><td>Works on</td><td class="yes">Any phone or computer with a browser</td><td class="no">Apple devices only</td><td>Web, iPhone and Android</td><td class="no">Android only</td></tr>
</tbody>
</table>
</div>
<p class="hint" style="margin-top:12px">Prices and limits as reported in 2026 (US App Store and the makers' sites); they change, so check before you buy. Streaks and HabitNow send reminders on their own, Streaks has Apple Watch and Mac apps, and Habitica turns your habits into a game. Habits uses your calendar for reminders and keeps things simple.</p>
</div>
</section>
<section class="section landing-only" id="ai">
<div class="wrap api-grid">
<div>
<p class="eyebrow">For AI assistants</p>
<h2 class="h2">Your assistant can set up a habit for you.</h2>
<p class="lede" style="margin-top:14px">Habits has no API on purpose: your habits are private and live with you. An assistant can still hand you a link that opens Habits with a new habit filled in. You check it and tap Add.</p>
<p style="margin-top:14px">How the links work: <a href="/llms.txt">/llms.txt</a>.</p>
</div>
<pre class="code"><span class="c"># Drink 8 glasses of water a day</span>
https://habits-free.openapps.xyz/new?name=Drink%20water&goal=8&unit=glasses
<span class="c"># Run 3 times a week</span>
https://habits-free.openapps.xyz/new?name=Run&times=3
<span class="c"># Stretch on Monday, Wednesday and Friday</span>
https://habits-free.openapps.xyz/new?name=Stretch&days=mon,wed,fri
<span class="c"># Count the days without sugar</span>
https://habits-free.openapps.xyz/new?name=No%20sugar&type=avoid</pre>
</div>
</section>
<section class="section-tight landing-only">
<div class="wrap">
<h2 class="h2">Questions</h2>
<div class="faq" style="margin-top:22px">
<details><summary>Is Habits really free?</summary><div>Yes. There is no paid plan, no ads, no tracking and no limit on habits. Each check-in is a tiny write that costs almost nothing, and OpenApps pays for it.</div></details>
<details><summary>Do I need an account?</summary><div>No. Add a habit and start checking it off. Your habits are saved in your browser and in a guest account made for it. To keep them on your phone and laptop, sign in with your email, and Habits copies them into your account.</div></details>
<details><summary>How is Habits different from Streaks?</summary><div>Streaks has no free version: it is a one-time $5.99 purchase on the App Store, for Apple devices only, with up to 24 tasks a day, as reported in 2026. Habits is free, works in any browser on iPhone, Android or a computer, and has no habit limit. Streaks has apps for Apple Watch and Mac; Habits does not.</div></details>
<details><summary>Is Habits a good Habitica alternative?</summary><div>If you want the habits without the game, yes. Habitica turns your habits into a role-playing game and sells an optional subscription, reported at $4.99 a month or $47.99 a year in 2026. Habits has no avatars or gold: just your habits, streaks and history, free.</div></details>
<details><summary>Can Habits remind me?</summary><div>Not by itself. A web page cannot reliably send reminders on its own without a server, so Habits does not pretend to. On each habit's page, Add a reminder to my calendar makes a repeating calendar event on the habit's schedule, and your calendar reminds you.</div></details>
<details><summary>How are streaks counted?</summary><div>Streaks follow the schedule. Every day: days in a row. Chosen weekdays: those days in a row, and days off never break it. Times a week: weeks in a row where you reach the number. Every few days: times in a row you did it in each stretch. Days without: days since your last slip. Today never breaks a streak before it is over.</div></details>
<details><summary>Who can see my habits?</summary><div>Only you. If you share a habit with a friend, the people with that link see your name and your streak for that one habit, and nothing else.</div></details>
<details><summary>Can I export my habits?</summary><div>Yes. Settings has Download CSV, with every check-in, count and note, ready for any spreadsheet.</div></details>
</div>
</div>
</section>
<section class="section-tight landing-only">
<div class="wrap">
<h2 class="h2">More free apps</h2>
<ul class="more-apps">
<li><a href="https://lingo-free.openapps.xyz/"><strong>Lingo</strong><span>Learn a language, instead of Duolingo</span></a></li>
<li><a href="https://still-free.openapps.xyz/"><strong>Still</strong><span>Meditation and sleep, instead of Calm</span></a></li>
<li><a href="https://split-free.openapps.xyz/"><strong>Split</strong><span>Share costs with friends, instead of Splitwise</span></a></li>
<li><a href="https://openapps.free/apps"><strong>All apps</strong><span>The app store of free alternatives</span></a></li>
</ul>
</div>
</section>
</main>
<footer class="site-foot">
<div class="wrap">
<!-- network:start -->
<nav class="oa-network" aria-label="Free apps from OpenApps">
<p class="oa-network-title"><a href="https://openapps.free/">Free apps from OpenApps</a><span>Free alternatives to the apps you pay for, built for people and their AI assistants.</span></p>
<ul>
<li><a href="https://sign-free.openapps.xyz/">Sign</a><span>instead of DocuSign</span></li>
<li><a href="https://forms-free.openapps.xyz/">Forms</a><span>instead of Typeform</span></li>
<li><a href="https://split-free.openapps.xyz/">Split</a><span>instead of Splitwise</span></li>
<li><a href="https://links-free.openapps.xyz/">Links</a><span>instead of Bitly</span></li>
<li><a href="https://when-free.openapps.xyz/">When</a><span>instead of Doodle</span></li>
<li><a href="https://pdf-free.openapps.xyz/">PDF</a><span>instead of Smallpdf</span></li>
<li><a href="https://invoice-free.openapps.xyz/">Invoice</a><span>instead of FreshBooks</span></li>
<li><a href="https://bio-free.openapps.xyz/">Bio</a><span>instead of Linktree</span></li>
<li><a href="https://book-free.openapps.xyz/">Book</a><span>instead of Calendly</span></li>
<li><a href="https://dictate-free.openapps.xyz/">Dictate</a><span>instead of Wispr Flow</span></li>
<li><a href="https://images-free.openapps.xyz/">Images</a><span>instead of TinyPNG</span></li>
<li><a href="https://resume-free.openapps.xyz/">Resume</a><span>instead of Zety</span></li>
<li><a href="https://sheets-free.openapps.xyz/">Sheets</a><span>instead of SignUpGenius</span></li>
<li><a href="https://paste-free.openapps.xyz/">Paste</a><span>instead of Pastebin</span></li>
<li><a href="https://record-free.openapps.xyz/">Record</a><span>instead of Loom</span></li>
<li><a href="https://lingo-free.openapps.xyz/">Lingo</a><span>instead of Duolingo</span></li>
<li><a href="https://still-free.openapps.xyz/">Still</a><span>instead of Calm</span></li>
<li><a href="https://monitor-free.openapps.xyz/">Monitor</a><span>instead of Baby Monitor 3G</span></li>
<li><a href="https://cards-free.openapps.xyz/">Cards</a><span>instead of Quizlet</span></li>
<li><a href="https://budget-free.openapps.xyz/">Budget</a><span>instead of YNAB</span></li>
<li><a href="https://baby-free.openapps.xyz/">Baby</a><span>instead of Huckleberry</span></li>
<li><a href="https://habits-free.openapps.xyz/" aria-current="page">Habits</a><span>instead of Streaks</span></li>
<li><a href="https://polls-free.openapps.xyz/">Polls</a><span>instead of Slido</span></li>
</ul>
<p class="oa-network-more"><a href="https://openapps.free/apps">All free apps</a> · <a href="https://openapps.free/alternatives">Free alternatives A to Z</a> · <a href="https://openapps.free/for-ai">Add every app to your AI assistant</a></p>
</nav>
<!-- network:end -->
<div class="foot-note" style="margin-top:0;border-top:0;padding-top:0">
<span>Habits is an <a href="https://beta.openapps.xyz/a/habits_free" target="_blank" rel="noopener noreferrer">OpenApp</a>: free, with public <a href="https://beta.openapps.xyz/a/habits_free/source" target="_blank" rel="noopener noreferrer">source</a> and its own agent.</span>
<span><a href="https://openapps.free/">OpenApps free apps</a> · <a href="/llms.txt">llms.txt</a></span>
</div>
</div>
</footer>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Change history
Point OpenApps links to openapps.free
Bind agent address in policy
Use OpenApp service URLs and add contribution strip
Bounded source sync
Bounded source sync
Bounded source sync