README Generator
Build a complete README.md from a short form: badges, install steps, usage, licence. Live Markdown preview, nothing sent to a server.
One item per line.
Only the sections you fill in reach the file, so you never ship a README full of "TODO" headings. Badges need the repository field to be set.
Key Takeaways
- The hard part of a README is deciding which sections a project needs; this generator emits only the sections you actually filled in, so nothing ships as a "TODO" heading.
- Four badges (licence, stars, open issues, last commit) answer the question a first-time visitor really has: is this maintained.
- The install block is emitted with the clone line, the cd and the install command in one fenced block, so it pastes into a terminal verbatim.
- GitHub builds heading anchors without folding non-ASCII letters, so a table of contents written by hand for a Turkish heading is usually broken.
Why READMEs get abandoned half-written
You finish the project, flip the repo to public, open README.md, write the title and a one-line description, and then stop. What stalls the file is almost never the prose. It is the decision: does this need a Roadmap section, a screenshot, a badge row? While that stays unresolved the file grows an empty "## Usage" heading and sits there for a year.
The form below makes that decision by omission. Leave a field blank and its section is never emitted: no features means no Features heading, no requirements means no Requirements heading. What you end up with is short but complete, rather than a scaffold of placeholders that signals nobody is home.
What a README owes a first-time visitor
Someone landing on your repository is answering three questions: what does this do, will it work for me, how do I install it. All three belong above the fold. Project name, a one-line tagline, a short description, then installation. Architecture notes, design rationale and benchmark tables move down the page or out of the file entirely.
The most commonly dropped line in an install block is the clone itself. The maintainer is already inside the directory, so they write npm install and move on, forgetting that the reader has not downloaded anything yet. Fill in the repo field and the generator emits all three lines together:
git clone https://github.com/owner/project.gitcd projectnpm installThat block works when selected and pasted whole. Switch the package manager to yarn, pnpm or bun and the install command changes with it. Supply your own command and it replaces the default rather than sitting next to it.
Badge fatigue
Badges are useful right up to the point where there are fifteen of them and none get read. The generator emits four, all derived from the repo path: licence, stars, open issues, last commit. Every one speaks to whether the project is alive, which is what a visitor is trying to work out before investing an afternoon in it.
Note
A README is not documentation
A README is a pitch plus a quick start. Documentation is reference material: every function signature, every configuration key, every error code. Compress both into one file and you get 900 lines that serve neither purpose. The practical test is scroll depth. If a README does not end within a few screens, the surplus belongs in a docs/ directory or a wiki.
| Section | README | Documentation |
|---|---|---|
| What it does | Two or three sentences | Expanded, with context |
| Installation | One copy-pasteable block | Per-platform detail |
| API reference | One representative example | Complete listing |
| Configuration keys | The two or three that matter | All of them, with defaults |
| Troubleshooting | Not here | Yes |
Table of contents and anchor matching
GitHub derives an anchor from every Markdown heading: lowercase it, drop punctuation, replace spaces with hyphens. The detail that catches people out is that letters outside ASCII are kept as they are rather than transliterated. A heading of ## Kurulum ve Çalıştırma produces #kurulum-ve-çalıştırma, not #kurulum-ve-calistirma. Anyone hand-writing a contents list tends to simplify those characters, and the links then silently jump nowhere.
## Table of Contents - [Kurulum ve Çalıştırma](#kurulum-ve-calistirma) <!-- dead link -->- [Kurulum ve Çalıştırma](#kurulum-ve-çalıştırma) <!-- correct --> ## Kurulum ve ÇalıştırmaBecause the generator derives the contents list from the same headings it emits, the two cannot drift apart. There is also a threshold: with two sections or fewer the list is skipped entirely, since a three-item table of contents only adds height to a page nobody needed help navigating.
Frequently Asked Questions
- Does a README need a licence section?
- A short one helps, but it is not what makes the project licensed. The LICENSE file at the repository root is: GitHub reads the licence from there. The README section simply points a reader at that file, and the generator emits a single line rather than a paraphrase that might contradict it.
- Should I include screenshots?
- If the project has a visual output, include one. For a CLI, a fenced block of real terminal output beats a screenshot because it is selectable and searchable. For a library, skip images and spend the space on a usage example. When you do add one, prefer a static PNG over a GIF: animated captures are usually several megabytes.
- Should the README be in English or my own language?
- Follow the audience. An internal tool for one local team reads better in that team's language. Anything published to npm or PyPI, or expecting outside contributions, should be in English. For both, keep README.md in English and README.tr.md alongside it, with a link between them. This generator produces either language, and the contents anchors stay correct in both.
- How long should a README be?
- There is no fixed number, but there is a usable rule: if a reader has to scroll more than about three screens to reach the install command, the file has grown past its job. For a small library, 50 to 150 lines is comfortably enough. Anything beyond that is documentation wearing a README filename.
- Do I also need a CONTRIBUTING file?
- If you want pull requests from strangers, yes. GitHub recognises CONTRIBUTING.md and surfaces it as someone opens an issue or a pull request, which is the moment the guidance is useful. The README section signals the door is open; CONTRIBUTING.md carries code style, test commands and commit conventions. The generator emits the README section optionally, as a numbered fork, branch, commit, pull request list.