Drop any file to identify it
No upload. No signup. No sending your file halfway across the internet.
We tell you what it is, right here in your browser.
Drop it!
Let go to identify this file.
Couldn't identify this file
Need to convert it? fwip it →
Where .gitignore decides which files git tracks, .gitattributes decides how it tracks them. Each line is a path pattern followed by attributes: `*.png binary` tells git not to try diffing PNG files. `* text=auto eol=lf` normalises line endings across Mac/Linux/Windows checkouts. `*.psd filter=lfs diff=lfs merge=lfs -text` hands a file off to Git LFS. The file lives at the repo root and is committed alongside the code it describes.
The most common use is line-ending control. Without .gitattributes, Windows users commit CRLF, Mac/Linux users commit LF, and your diffs become unreadable churn. Setting `* text=auto eol=lf` tells git to convert line endings on checkin and store them as LF in the repo — every contributor sees the same thing. The second most common use is `export-ignore`: marking files (tests, CI config, docs) that should be excluded from `git archive` tarballs, so your release zip doesn't include `.github/` or `node_modules/`.
More advanced uses: custom merge drivers (`merge=ours` to always take your version), custom diff drivers (so Word docs diff as text), and language detection overrides for GitHub's Linguist (`*.h linguist-language=C` instead of C++). Most projects only need a few lines. Like .gitignore, edit it with any text editor, commit it to the repo, and it applies to everyone who clones.