.gitignore Generator

Generate a .gitignore file by combining curated templates for 25 languages, frameworks, IDEs and operating systems in one merged file. Nothing is uploaded.

Loading tool…

Worked examples

  • A single Node.js project

    The everyday case: one stack, one clean .gitignore, ready to drop straight into a new repo.

  • A Python project developed on a Mac in VS Code

    Combining a language template with OS and editor templates is the most common real-world request — stray OS and editor files are the top cause of accidental commits.

  • Mixing a real template with an unrecognized name

    An unrecognized template name is reported separately rather than silently dropped or breaking the whole result, so a typo doesn't produce a confusing empty file.

What this tool does

A .gitignore file tells Git which files and folders to never track — build output, dependency folders, editor settings, OS-generated clutter. This tool merges curated .gitignore templates for 25 common languages, frameworks, IDEs and operating systems into a single file, computed entirely in your browser from data bundled with the page.

When you need it

  • Starting a new repository and wanting a sensible, complete .gitignore in one step instead of assembling one from memory or several separate sources.
  • Adding coverage for a second language or tool to an existing project — for example, adding a Python data-processing script to a primarily Node.js repository.
  • Making sure editor and OS-specific files (.vscode/, .idea/, .DS_Store, Thumbs.db) are excluded without needing to remember every platform's quirks.
  • Standardizing .gitignore content across multiple repositories that share the same stack, by regenerating the same template combination each time.

How to select templates

Enter a comma-separated list of template names in the input — for example node,macos,vscode for a Node.js project developed on a Mac in VS Code. Order doesn't matter, duplicates are silently collapsed, and each requested template that's found becomes its own clearly labeled section in the output, headed by a comment like ### Node ###. This keeps the merged result easy to scan and edit by hand afterward — you can always delete a section you don't need or add lines Git doesn't cover by default.

What's covered

Twenty-five templates spanning languages and runtimes (node, python, java, go, rust, dotnet, php, r, elixir), frameworks (react, nextjs, django, rails, flutter), mobile and native platforms (android, ios, unity), infrastructure tooling (docker, terraform), editors (vscode, jetbrains), operating systems (macos, windows, linux), and document tooling (latex). Each template is a curated, original set of the most common patterns for that stack — not an exhaustive mirror of any single external source, but enough to cover the files that cause the vast majority of accidental commits for that technology.

Why unrecognized names are reported, not ignored

If a template name in your list doesn't match anything in the curated set — a typo, or a stack not yet covered — it's listed separately as unrecognized rather than silently dropped from the output. That way a misspelling like nodejs instead of node is immediately visible instead of quietly producing a .gitignore that's missing a section you expected, which could otherwise lead to committing files you meant to exclude.

After generating

Treat the output as a strong starting point, not a permanent, untouchable file — project-specific paths (a custom build-output/ folder, a local secrets file with an unusual name) are worth adding by hand, and if a file is already tracked by Git, adding it to .gitignore won't untrack it; you'll need git rm --cached <file> for that.

Limits

The template list is capped at 500 characters, far more than needed for any realistic combination of the 25 available templates.

Frequently asked questions

Is my project information uploaded anywhere?
No. The .gitignore is assembled entirely in your browser from templates bundled with the page; nothing about your project is sent anywhere.
How do I select templates?
Enter a comma-separated list of template names, such as node,macos,vscode — order doesn't matter, and each is added as its own clearly labeled section.
Which templates are available?
node, python, java, go, rust, dotnet, react, nextjs, django, rails, macos, windows, linux, vscode, jetbrains, terraform, docker, unity, flutter, android, ios, latex, r, elixir and php.
What happens if I misspell a template name?
It's listed separately as unrecognized instead of silently being dropped or breaking the rest of the file, so a typo is easy to catch and fix.