lingo-free.openapps.xyz

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.
Owned app · rev 8af89d2cc9f8
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 7efc97d0dde0b2a3e729ccf9
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.
← All files
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>Lingo: learn languages free, with no hearts and no ads | OpenApps</title>
<meta name="description" content="Learn Spanish, French, German, Italian or Portuguese for free. Bite-size lessons, streaks, leagues and smart review, with no hearts, no energy limit, no ads and no subscription. A free Duolingo alternative.">
<link rel="canonical" href="https://lingo-free.openapps.xyz/">
<meta property="og:type" content="website">
<meta property="og:site_name" content="OpenApps">
<meta property="og:title" content="Lingo: learn a language free, no hearts, no ads">
<meta property="og:description" content="Duolingo-style lessons for Spanish, French, German, Italian and Portuguese. Make all the mistakes you want: no hearts, no ads, no subscription, no sign-up.">
<meta property="og:url" content="https://lingo-free.openapps.xyz/">
<meta property="og:image" content="https://openapps.free/og/lingo.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="Lingo">
<link rel="alternate" type="text/plain" title="llms.txt" href="/llms.txt">
<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":"Lingo by OpenApps","applicationCategory":"EducationalApplication","operatingSystem":"Web, Android, iOS (installable web app)","url":"https://lingo-free.openapps.xyz/","description":"Free language learning with bite-size lessons for Spanish, French, German, Italian and Portuguese. Streaks, a weekly league and spaced-repetition review, with no hearts, no energy limit, no ads and no subscription.","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"isAccessibleForFree":true,"inLanguage":["en","es","fr","de","it","pt"],"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 Lingo really free?","acceptedAnswer":{"@type":"Answer","text":"Yes. Every lesson, practice round and league is free. There is no paid plan, no ads, no hearts and no energy limit. If a feature ever costs real money to run, like AI conversation practice, it will be optional and charged at cost, and it will say so."}},
{"@type":"Question","name":"How is Lingo different from Duolingo?","acceptedAnswer":{"@type":"Answer","text":"Lingo works the same way: short lessons, a path of units, streaks, XP and a weekly league. The difference is that nothing limits your mistakes and nothing is held back for a subscription. Duolingo's free version uses hearts or energy and shows ads, and Super Duolingo is reported at about $13 a month or $60 to $85 a year in 2026. Duolingo has many more courses and features; Lingo covers beginner Spanish and French in full, plus the first units of German, Italian and Portuguese."}},
{"@type":"Question","name":"Do I need an account?","acceptedAnswer":{"@type":"Answer","text":"No. Pick a language and start the first lesson. Your progress is saved in your browser and in a guest account. If you want it on your other devices, sign in with your email and Lingo carries your progress over."}},
{"@type":"Question","name":"Which languages can I learn?","acceptedAnswer":{"@type":"Answer","text":"From English: Spanish and French, each with a full beginner course of 8 units and 40 lessons, and German, Italian and Brazilian Portuguese with their first 3 units. More units are on the way."}},
{"@type":"Question","name":"What happens if I make mistakes?","acceptedAnswer":{"@type":"Answer","text":"You see the right answer, and the exercise comes back at the end of the lesson. There are no hearts to lose and no waiting. Missed words also go into your mistakes review and your practice queue."}},
{"@type":"Question","name":"Can I use it on my phone?","acceptedAnswer":{"@type":"Answer","text":"Yes. Lingo is built for phones first. Add it to your home screen from your browser and it opens like an app, and lessons you have opened work offline."}},
{"@type":"Question","name":"Can my AI assistant use Lingo?","acceptedAnswer":{"@type":"Answer","text":"Yes. Lingo has a public HTTP API with no key. An assistant can read any course, unit and lesson, then quiz you or explain the grammar tip for a unit."}}
]}
</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="/">Lingo</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="/#api">API</a>
      <a href="https://openapps.free/apps">Free apps</a>
      <a class="nav-cta" href="/learn" data-app>Learn</a>
    </nav>
    <div id="head-stats"></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/lingo_free" target="_blank" rel="noopener noreferrer">OpenApp</a>.</span> <a href="https://beta.openapps.xyz/a/lingo_free/discussion" target="_blank" rel="noopener noreferrer">Suggest a change</a><span aria-hidden="true"> · </span><a href="https://beta.openapps.xyz/a/lingo_free/source" target="_blank" rel="noopener noreferrer">View source &amp; 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-lingo.webp" alt="" width="220" height="190">
        <p class="eyebrow">Free alternative to Duolingo</p>
        <h1 class="display">Learn a language for free. No hearts, no ads.</h1>
      </div>
      <div class="hero-more">
        <p class="lede">Bite-size lessons for Spanish, French, German, Italian and Portuguese. Make all the mistakes you need, keep your streak, climb the weekly league. Nothing is locked behind a subscription.</p>
        <ul class="hero-points">
          <li>Unlimited lessons and practice, every day</li>
          <li>No sign-up: start the first lesson right now</li>
          <li>Listening, speaking, typing and word tiles</li>
        </ul>
      </div>
      <div id="start">
        <div class="start card">
          <p class="start-label">I want to learn</p>
          <ul class="start-list">
            <li><a class="start-lang" href="/learn/es/lesson/1/1" data-app><span class="course-code">ES</span><span class="start-name"><strong>Spanish</strong><span>Full beginner course</span></span></a></li>
            <li><a class="start-lang" href="/learn/fr/lesson/1/1" data-app><span class="course-code">FR</span><span class="start-name"><strong>French</strong><span>Full beginner course</span></span></a></li>
            <li><a class="start-lang" href="/learn/de/lesson/1/1" data-app><span class="course-code">DE</span><span class="start-name"><strong>German</strong><span>First 3 units</span></span></a></li>
            <li><a class="start-lang" href="/learn/it/lesson/1/1" data-app><span class="course-code">IT</span><span class="start-name"><strong>Italian</strong><span>First 3 units</span></span></a></li>
            <li><a class="start-lang" href="/learn/pt/lesson/1/1" data-app><span class="course-code">PT</span><span class="start-name"><strong>Portuguese</strong><span>First 3 units</span></span></a></li>
          </ul>
          <p class="hint center">Free. No sign-up, no hearts, no ads.</p>
        </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>Pick a language</h3><p>Tap Spanish, French, German, Italian or Portuguese and the first lesson starts. No account, no placement quiz unless you want one.</p></li>
        <li><h3>Learn in five minutes a day</h3><p>Each lesson has 12 to 15 short exercises: pick the meaning, build the sentence, type what you hear, fill the blank, say it out loud.</p></li>
        <li><h3>Keep it with review</h3><p>Lingo remembers what you missed and brings each word back right before you would forget it, so it sticks.</p></li>
      </ol>
    </div>
  </section>

  <section class="section-tight landing-only">
    <div class="wrap">
      <h2 class="h2">Everything you like about Duolingo, without the limits</h2>
      <ul class="features">
        <li><h3>A path of units</h3><p>Units on everyday topics, each with a short grammar tip in plain English. Already know some? Take a short test and jump ahead.</p></li>
        <li><h3>Seven kinds of exercises</h3><p>Multiple choice, match the pairs, word tiles, listening at normal and slow speed, fill in the blank, typing with fair grading, and speaking.</p></li>
        <li><h3>Streaks and daily goals</h3><p>Pick casual, regular, serious or intense. Earn streak freezes by practicing, so one busy day does not undo a month.</p></li>
        <li><h3>A weekly league</h3><p>Climb the board with everyone learning this week, under a nickname you choose. XP is capped per hour, so it stays fair.</p></li>
        <li><h3>Practice and mistakes</h3><p>Review weak words with spaced repetition, redo your recent mistakes, and see every word you have learned. All free.</p></li>
        <li><h3>On every device</h3><p>Add Lingo to your home screen. Sign in with your email when you want your progress on your phone and laptop.</p></li>
      </ul>
    </div>
  </section>

  <section class="section-tight landing-only">
    <div class="wrap">
      <h2 class="h2">Free, with no catch</h2>
      <p class="lede" style="margin-top:14px">Learning should not stop because you ran out of hearts. Lingo is free because it costs very little to run: lessons are text, your browser reads them aloud, and OpenApps pays for the rest.</p>
      <div class="table-wrap" style="margin-top:24px">
        <table class="table compare">
          <thead><tr><th scope="col"></th><th scope="col">Lingo</th><th scope="col">Duolingo free</th><th scope="col">Super Duolingo</th></tr></thead>
          <tbody>
            <tr><td>Price</td><td class="yes">Free</td><td>Free</td><td class="no">About $13 a month, or about $60 to $85 a year</td></tr>
            <tr><td>Mistakes</td><td class="yes">Unlimited</td><td class="no">Limited by hearts or energy</td><td>Unlimited</td></tr>
            <tr><td>Ads</td><td class="yes">None</td><td class="no">Yes</td><td>None</td></tr>
            <tr><td>Mistakes review</td><td class="yes">Free</td><td class="no">Part of Super</td><td>Yes</td></tr>
            <tr><td>Streaks, XP and leagues</td><td class="yes">Yes</td><td>Yes</td><td>Yes</td></tr>
            <tr><td>Account to start</td><td class="yes">Not needed</td><td>Asked to make a profile</td><td>Needed</td></tr>
            <tr><td>Languages from English</td><td>5 (2 full beginner courses)</td><td class="yes">Over 40</td><td class="yes">Over 40</td></tr>
            <tr><td>API for AI assistants</td><td class="yes">Yes, no key</td><td class="no">No</td><td class="no">No</td></tr>
          </tbody>
        </table>
      </div>
      <p class="hint" style="margin-top:12px">Duolingo prices and limits as reported in 2026; they vary by country and change, so check their site. Duolingo has far more courses, stories and features. Lingo is for learning the basics without limits.</p>
    </div>
  </section>

  <section class="section landing-only" id="api">
    <div class="wrap api-grid">
      <div>
        <p class="eyebrow">For AI assistants</p>
        <h2 class="h2">Your assistant can quiz you.</h2>
        <p class="lede" style="margin-top:14px">Lingo has a public API with no key and no account. An assistant can read every course, unit and lesson, then quiz you on this week's words or explain a unit's grammar tip.</p>
        <p style="margin-top:14px">Full reference: <a href="/llms.txt">/llms.txt</a>.</p>
      </div>
      <pre class="code"><span class="c"># Every course and its units</span>
curl https://functions.openapps.xyz/apps/7efc97d0dde0b2a3e729ccf9/api/courses

<span class="c"># Unit 3 of Spanish: tip, lessons, words, sentences</span>
curl https://functions.openapps.xyz/apps/7efc97d0dde0b2a3e729ccf9/api/courses/es/units/3

<span class="c"># One lesson</span>
curl https://functions.openapps.xyz/apps/7efc97d0dde0b2a3e729ccf9/api/courses/fr/units/1/lessons/2</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 Lingo really free?</summary><div>Yes. Every lesson, practice round and league is free. There is no paid plan, no ads, no hearts and no energy limit. If a feature ever costs real money to run, like AI conversation practice, it will be optional and charged at cost, and it will say so.</div></details>
        <details><summary>How is Lingo different from Duolingo?</summary><div>Lingo works the same way: short lessons, a path of units, streaks, XP and a weekly league. The difference is that nothing limits your mistakes and nothing is held back for a subscription. Duolingo's free version uses hearts or energy and shows ads, and Super Duolingo is reported at about $13 a month or $60 to $85 a year in 2026. Duolingo has many more courses and features; Lingo covers beginner Spanish and French in full, plus the first units of German, Italian and Portuguese.</div></details>
        <details><summary>Do I need an account?</summary><div>No. Pick a language and start the first lesson. Your progress is saved in your browser and in a guest account. If you want it on your other devices, sign in with your email and Lingo carries your progress over.</div></details>
        <details><summary>Which languages can I learn?</summary><div>From English: Spanish and French, each with a full beginner course of 8 units and 40 lessons, and German, Italian and Brazilian Portuguese with their first 3 units. More units are on the way.</div></details>
        <details><summary>What happens if I make mistakes?</summary><div>You see the right answer, and the exercise comes back at the end of the lesson. There are no hearts to lose and no waiting. Missed words also go into your mistakes review and your practice queue.</div></details>
        <details><summary>Can I use it on my phone?</summary><div>Yes. Lingo is built for phones first. Add it to your home screen from your browser and it opens like an app, and lessons you have opened work offline.</div></details>
        <details><summary>Can my AI assistant use Lingo?</summary><div>Yes. Lingo has a public HTTP API with no key. An assistant can read any course, unit and lesson, then quiz you or explain the grammar tip for a unit. See <a href="/llms.txt">llms.txt</a>.</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://dictate-free.openapps.xyz/"><strong>Dictate</strong><span>Private speech to text, instead of Wispr Flow</span></a></li>
        <li><a href="https://split-free.openapps.xyz/"><strong>Split</strong><span>Share costs on trips, instead of Splitwise</span></a></li>
        <li><a href="https://forms-free.openapps.xyz/"><strong>Forms</strong><span>Unlimited responses, instead of Typeform</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/" aria-current="page">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>
      </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>Lingo is an <a href="https://beta.openapps.xyz/a/lingo_free" target="_blank" rel="noopener noreferrer">OpenApp</a>: free, with public <a href="https://beta.openapps.xyz/a/lingo_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
8af89d2cc9 · 17 hours ago
Bind agent address in policy
0018350275 · 19 hours ago
Use OpenApps service URLs and add contribution strip
805365daf4 · 19 hours ago
Bounded source sync
3f2fb3b265 · 2 days ago
Bounded source sync
7dcb580324 · 2 days ago
Bounded source sync
dcd05c0944 · 2 days ago