Limits
File, push and repository sizes on GitHub, and OSCR's own caps. Your repositories live in your GitHub account, so GitHub's limits are the ones that apply; each figure links to GitHub's page that states it.
Each limit keeps the unit GitHub states it in; binary units: GiB (gibibyte) = 1,073,741,824 bytes, MiB (mebibyte) = 1,048,576 bytes; decimal units: GB (gigabyte) = 1,000,000,000 bytes.
File size
GitHub warns when you push a file larger than 50 MiB, and blocks a file larger than 100 MiB (100 mebibytes). Its web upload page accepts files up to 25 MiB. A larger file belongs in a release asset, a data archive or Git LFS: the large-files guide. Source: About large files on GitHub.
Push size
One push is at most 2 GB (2 gigabytes). A first push of a long history, or of a converted repository, can cross it. Source: Repository limits.
Troubleshooting the 2 GB push limit
Push the history in parts, oldest first: list the commits, push an older commit to the branch, then a newer one, until the branch is whole. Each part stays under the limit.
git log --oneline --reverse main git push origin OLDER-COMMIT:refs/heads/main git push origin NEWER-COMMIT:refs/heads/main git push origin main
Source: GitHub's page on the push limit.
Repository size
GitHub asks that repositories stay small: ideally under 1 GB, and under 5 GB strongly recommended. Research code rarely comes near it; data does, and goes elsewhere (large files). Source: Repository limits.
| What | Limit | Source |
|---|---|---|
| A file in git: GitHub warns above | 50 MiB | GitHub's documentation |
| A file in git: GitHub blocks it above | 100 MiB | GitHub's documentation |
| A file added through GitHub's web upload page | 25 MiB | GitHub's documentation |
| One push | 2 GB | GitHub's documentation |
| A repository, ideally under | 1 GB | GitHub's documentation |
| A repository, strongly recommended under | 5 GB | GitHub's documentation |
| A release asset (each file) | under 2 GiB | GitHub's documentation |
| Assets in one release | 1,000 | GitHub's documentation |
Tree limits
Beyond these, GitHub's pages and its API slow down or stop listing: keep a directory to fewer entries (a folder of many small files is better as one archive in a release), and a repository's branches few.
| What | Limit | Source |
|---|---|---|
| Entries in one directory | 3,000 | GitHub's documentation |
| Levels of directories | 50 | GitHub's documentation |
| Branches in one repository (advised) | 5,000 | GitHub's documentation |
| Repositories one account may own | 100,000 | GitHub's documentation |
Push policy
Branch and tag updates per push: in a repository's settings, GitHub's push policy can limit how many branches and tags one push may update. It stops an accidental git push --mirror from overwriting or deleting every branch at once. When a push is refused for it, git's output names the setting. Source: Managing the push policy for your repository.
| What | Figure | Source |
|---|---|---|
| Branch and tag updates per push, by default when the policy is on | 5 | GitHub's documentation |
| Branch and tag updates per push, the lowest setting | 2 | GitHub's documentation |
| Branch and tag updates per push, refused above this when rulesets apply | 1,000 | GitHub's documentation |
Push rule path exceptions
A push ruleset can refuse files by path, extension, path length or size. Since 2026-08-25 the path and size rules can exempt chosen paths: a size rule, for example, can let through the small folder of reference data a paper's figures are built from. Sources: Available rules for rulesets,GitHub's changelog.
OSCR's own caps
What passes through OSCR's Worker is capped so that the service stays free. A larger commit or asset goes through GitHub's own pages or git push, which OSCR never sees. The per-account counts are over the last 24 hours, and a refusal says when you can try again.
| What | Cap | Set by |
|---|---|---|
| One web action through the registry (a commit's files, a text) | 1 MiB | OSCR |
| One release asset uploaded through the registry | 25 MiB | OSCR |
| Repositories one account creates through the registry in 24 hours | 10 | OSCR |
| Repositories one account links in 24 hours | 20 | OSCR |
| Actions of every kind one account makes through the registry in 24 hours | 100 | OSCR |
Billing
OSCR costs nothing and bills nothing: it asks for no payment method, and it has no plan to sell. What you use on GitHub is on your own GitHub account, under GitHub's plan.
GitHub Free's Git LFS quotas are per account: 10 GiB of storage and 10 GiB of downloads a month. Without a payment method on file, Git LFS is blocked for the account once a quota is spent, until the next month; with one, the excess is billed. Source: Git LFS billing.
| What | Limit | Source |
|---|---|---|
| One file in Git LFS (GitHub Free) | 2 GB | GitHub's documentation |
| LFS storage per account (GitHub Free) | 10 GiB | GitHub's documentation |
| LFS downloads per account and month (GitHub Free) | 10 GiB | GitHub's documentation |
Budgets and usage alerts
Budgets and usage alerts are GitHub's: you set them on GitHub's billing pages, and GitHub sends the alerts. Usage is counted by calendar month. OSCR sets no budget and sees none of your usage. Sources: Budgets and alerts, Setting up budgets,Billing cycles.
GitHub Pages size limits
A GitHub Pages site built from your repository has its own limits. OSCR links a repository's Pages site, and never rebuilds or copies it. Source: GitHub Pages limits.
| What | Limit | Source |
|---|---|---|
| A published GitHub Pages site | 1 GB | GitHub's documentation |
| The source repository of a Pages site (recommended) | 1 GB | GitHub's documentation |
