Permitly
Unlimited Free Usage — no signup, no paywall

Choose your open-source license like you draft a trading card

Eight legendary licenses, each with its own stats, strengths and famous wielders. Take the 5-question quiz, check compatibility before you mix code, and mint a ready-to-ship LICENSE file.

8 license cards 64 compatibility matchups 1-click LICENSE minting

Set 01 — The Core Eight

The license deck

Every license is a card with real stats. Hover for the sheen, tap a card’s buttons to mint its LICENSE file or test it in the compatibility arena.

Popularity scores reflect each license’s share of open-source projects in the wild — MIT and Apache-2.0 dominate, copyleft holds its ground.

The Sorting Hat

Which license is your soulmate?

Answer 5 questions. Permitly scores all 8 licenses against your answers and shows its working — no black boxes.

The Arena

License compatibility checker

Your project uses one license, your dependency uses another. Can they combine? Pick both — or tap any cell in the matrix.

Pick two licenses and hit “Can they combine?”
or tap a matchup in the matrix below.

The full 8×8 matchup matrix

Rows = your project  ·  Columns = the dependency you want to pull in

compatible compatible with conditions not compatible

The Mint

Mint your LICENSE file

Pick a license, add your name and year — get the complete, genuine license text. Copy it or download it as LICENSE.

After minting

    LICENSE —
    
          

    How to Choose an Open Source License (Without a Law Degree)

    Picking an open source license feels like it should be a five-minute task, yet it paralyzes developers for days. MIT vs Apache vs GPL. Permissive vs copyleft. Patent grants, tivoization, the “SaaS loophole.” The vocabulary alone is enough to make you close the tab and ship your code with no license at all — which, as you’ll see below, is the one choice that is genuinely dangerous.

    This guide walks through everything a working developer needs: what the eight most important licenses actually require of you, how MIT vs Apache 2.0 vs GPL really differ, how open source license compatibility works when you mix code, and how to apply a license to your project in about sixty seconds. By the end, you’ll be able to answer the question “which license should I choose?” with confidence instead of vibes.

    Why your project needs a license at all

    Here is the uncomfortable truth most tutorials skip: if you publish code with no license, nobody is allowed to use it. Copyright law in almost every country grants the author “all rights reserved” by default. Pushing code to a public repository does not waive those rights — it just lets people look at your code. Without a license, other developers have no legal permission to copy it, modify it, or build on it, no matter how public the repository is.

    An open source license is simply you, the copyright holder, granting the public a set of permissions in advance: to use, study, modify, and share your work. Every license on the Permitly deck does that. What differs is the conditions attached — and those conditions are the entire game.

    MIT vs Apache 2.0 vs GPL: the big three, compared

    Roughly nine out of ten open source projects use one of three licenses, so let’s settle the MIT vs Apache vs GPL debate properly.

    The MIT License is the shortest and most popular license in the world. It says, in essence: do whatever you want with this code — use it, change it, sell it, bury it inside a proprietary product — as long as you keep the copyright notice attached. That’s it. No patent grant, no share-alike requirement, no paperwork beyond the notice. Its brevity is its superpower: every developer on earth understands it in thirty seconds, which is why libraries like React, Vue.js, and Node.js chose it. If your goal is maximum adoption, MIT is the default answer.

    The Apache License 2.0 is MIT’s more careful sibling. It grants the same broad freedoms, but it adds two things lawyers care about: an explicit patent grant (every contributor automatically licenses their relevant patents to users, and anyone who sues over those patents loses their license) and precise definitions of terms like “derivative work.” It also asks you to document significant changes you make. The cost is length — a few pages instead of a paragraph — but the payoff is corporate adoption: most large companies’ legal teams have pre-approved Apache-2.0, which is why Kubernetes, Android, and TensorFlow wear it.

    The GNU General Public License (GPL-3.0) plays a different game entirely. Where MIT and Apache are permissive — “do what you want” — the GPL is copyleft: “you may build on this, but your version must grant the same freedoms.” Anyone who distributes your code, or a program built from it, must release the complete source under the GPL too. It also includes patent protection and famously blocks “tivoization” (shipping GPL software on locked-down hardware). The GPL is the license you pick when your priority isn’t adoption but freedom that can’t be taken away — no one can ever turn your work into a proprietary product.

    MIT Apache-2.0 GPL-3.0
    CopyleftNoneNoneStrong
    Closed-source forks allowedYesYesNo
    Explicit patent grantNoYesYes
    Must document changesNoYesYes
    Text length~20 lines~200 lines~600 lines
    Famous usersReact, Node.jsKubernetes, AndroidGCC, WordPress*

    * WordPress uses GPL version 2 or later; the GPL family shares the same copyleft philosophy.

    Permissive vs copyleft: the one distinction that matters

    Strip away the legalese and every license decision reduces to one question: when someone builds on your work, must they keep it open?

    Permissive licenses (MIT, Apache-2.0, BSD-3-Clause) say no. They maximize the number of people who can use your code — including inside proprietary products — at the cost of letting improvements disappear behind closed doors. Choose permissive when adoption matters more than control: libraries, frameworks, developer tools, and anything where ubiquity is the goal.

    Copyleft licenses (GPL-3.0, AGPL-3.0, and the weaker LGPL-3.0 and MPL-2.0) say yes, to varying degrees. Strong copyleft (GPL) infects the entire combined work: distribute a program containing GPL code and the whole thing must be GPL. Weak or file-level copyleft (MPL-2.0, LGPL-3.0) is surgical: only the licensed files — or the library itself — must stay open, while the rest of the project can be anything. Network copyleft (AGPL-3.0) extends the GPL’s reach to software used over a network: run a modified AGPL program on your servers and you must offer its source to your users. Choose copyleft when you want to guarantee the software — and everything built from it — stays free forever.

    Neither camp is morally superior; they optimize for different outcomes. The Linux kernel’s GPL kept an entire ecosystem open. MIT’s permissiveness made JavaScript’s ecosystem explode. Know which game you’re playing.

    The other five cards in the deck

    LGPL-3.0 is the GPL’s kinder sibling, designed for libraries. A proprietary application may link against an LGPL library (dynamically), but modifications to the library itself must be shared. Qt, FFmpeg, and VLC use it: the libraries stay open while the apps built on them can be anything.

    MPL-2.0 (Mozilla Public License) is the pragmatic middle path and a favorite of corporate open source programs. Copyleft applies file by file: change an MPL-licensed file and that file stays open; add your own new files and they can be proprietary. It even declares itself compatible with the GPL, so a future relicense is painless. Firefox and Thunderbird ship under it.

    BSD 3-Clause is MIT’s near-twin with one extra sentence: nobody may use your name to endorse products built from your code. Academic projects (Django, FreeBSD, NumPy) love it. In practice, choose between MIT and BSD on vibes — they’re functionally interchangeable.

    AGPL-3.0 exists because of a loophole. The GPL’s share-alike duty triggers on distribution — but a company can take GPL code, modify it, run it on their servers, and never “distribute” anything, keeping all improvements private. The AGPL closes that gap: network use counts too. If you run a SaaS and want its code to stay open, AGPL is your card. Mastodon, Nextcloud, and MinIO chose it. Be warned: it’s the strictest mainstream license, and many companies ban AGPL dependencies outright.

    The Unlicense is a public-domain dedication — you waive every copyright interest you hold, and anyone can do anything, not even attribution required. It’s perfect for snippets and tiny utilities where even a license header feels like friction. One caveat: some jurisdictions don’t fully recognize public-domain dedications, so for international projects the Creative Commons CC0 dedication is the safer equivalent.

    Open source license compatibility: the rules of mixing code

    Modern projects are mosaics: your code plus dozens of dependencies, each with its own license. License compatibility asks whether those licenses can legally coexist in one combined work. Get it wrong and you can accidentally obligate yourself to open-source your entire proprietary product — or ship code you had no right to combine.

    The good news: the rules are simpler than they look. Permissive licenses combine with everything. MIT, BSD, and Apache-2.0 code can be dropped into any project — you just keep their copyright notices. (Apache-2.0 is even explicitly compatible with GPL-3.0 projects.) The friction always flows one way: from copyleft into permissive. You can put MIT code inside a GPL project, but you cannot put GPL code inside an MIT project without the whole thing becoming GPL.

    Three classic traps to memorize. Trap one: pulling a GPL-3.0 library into your MIT-licensed app. The moment you distribute the combination, your entire app must be GPL-3.0. Either relicense, or find an alternative library. Trap two: assuming “we only use it on our servers” protects you from the AGPL. It doesn’t — that’s precisely what the AGPL was written to catch. Trap three: statically linking an LGPL library into your binary. The LGPL’s freedom to link applies to dynamic linking; bake the library into your executable and your program inherits the LGPL’s terms. When in doubt, run the pair through the compatibility checker above — it encodes all of these rules in plain English.

    How to apply a license to your project in 60 seconds

    Choosing is the hard part; applying takes a minute. Generate your LICENSE file with the mint above, save it as LICENSE (no extension) in your repository root, and add the license identifier to your package metadata — the license field in package.json, setup.py, or Cargo.toml. For GPL-family licenses, also add the short copyright-and-license header to the top of each source file; the generated text includes the exact template. That’s genuinely all most projects need.

    Can you change your license later?

    Yes — but only with permission. You own your copyright, so you can relicense your own code any time. The catch is other people’s contributions: once someone contributes under MIT, you need every contributor’s consent to move the project to GPL. This is why large projects ask contributors to sign a Contributor License Agreement (CLA) up front. Moral of the story: pick carefully now, because every merged pull request makes a future switch harder.

    Three myths worth killing

    Myth: “Open source means I give up copyright.” No — you keep your copyright. A license is you exercising it by granting permissions on your terms. Only public-domain dedications like the Unlicense waive copyright itself.

    Myth: “GPL means I can’t make money.” The GPL explicitly permits selling software — “free” refers to freedom, not price. What you can’t do is sell it without the source and freedoms attached.

    Myth: “If I rewrite it from scratch, the license doesn’t apply.” A genuine clean-room reimplementation is yours. But “rewriting” that closely follows the original’s structure is a derivative work in most jurisdictions — don’t launder licenses.

    Still torn? Scroll up and take the five-question quiz — it scores every license against your actual priorities and shows its reasoning. Then mint your LICENSE file and get back to building.

    Frequently asked questions

    Which open source license should I choose for my project?

    There is no single best license — only the best license for your goals. As a rule of thumb: pick MIT for maximum adoption, Apache-2.0 when corporate users and patent protection matter, GPL-3.0 when you want derivatives to stay open forever, AGPL-3.0 for network services where the code must stay open even for server-side use, MPL-2.0 or LGPL-3.0 for the middle ground, and the Unlicense for tiny snippets. For a personalized answer, take the 5-question quiz above — it scores all eight licenses against your priorities.

    What is the difference between MIT, Apache 2.0, and GPL?

    MIT and Apache-2.0 are permissive licenses: anyone may use the code in closed-source products. Apache-2.0 additionally includes an explicit patent grant and requires documenting changes, while MIT is shorter and simpler. GPL-3.0 is a copyleft license: anyone who distributes the code or a program built on it must release the complete source under the same license. In short: MIT = do anything, Apache-2.0 = do anything with patent protection, GPL-3.0 = share alike, always.

    Can I use MIT-licensed code in a commercial, closed-source product?

    Yes. The MIT License explicitly permits commercial use, modification, and sublicensing — including inside proprietary, closed-source products. Your only obligations are to include the original copyright notice and the permission notice with the software. The same is true of Apache-2.0 and BSD-3-Clause. This is not true of GPL or AGPL code, which would require your product to be open-sourced under the same license.

    What does open source license compatibility mean?

    Compatibility asks whether code under two different licenses can legally be combined into one work. The core rule: permissive licenses (MIT, BSD, Apache-2.0) can be absorbed into any project, but copyleft licenses impose their terms on the whole combination — GPL-3.0 code forces the combined work to be GPL-3.0, and AGPL-3.0 additionally covers network use. Use the compatibility checker above to test any pair: pick your project’s license and the dependency’s license for a plain-English verdict.

    If I put code on GitHub with no license, can people use it?

    No — not legally. Copyright applies automatically, so code with no license is “all rights reserved” by default. People can view it on GitHub, but they have no permission to copy, modify, or redistribute it. If you want others to use your code, you must add a license — generate a LICENSE file above and commit it to your repository root.

    Can I change my project’s license later?

    You can relicense code you wrote yourself at any time, but changing the license of the whole project requires consent from every copyright holder — including all past contributors. That’s why many projects ask contributors to sign a Contributor License Agreement (CLA). The practical advice: choose carefully up front, because each merged contribution makes a later switch harder.