# ethereum/ethereum-org-website: the Next.js codebase behind ethereum.org

> The repository is the source for ethereum.org, not a client or a wallet. It is a Next.js site with Markdown content, pnpm, Playwright and Netlify, and it is built for people editing Ethereum's public documentation.

**ethereum/ethereum-org-website** — Ethereum.org is a primary online resource for the Ethereum community.

- Repository: https://github.com/ethereum/ethereum-org-website
- Website: https://ethereum.org/
- Stars: 5,973 · Forks: 5,436
- Language: Markdown
- License: MIT
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/ethereum-ethereum-org-website

## What ethereum-org-website actually is, and who edits it

The repository holds the code for the ethereum.org website. The README states the site's purpose as being "the best portal to Ethereum for our growing global community", and the code is the means to that end. It is not the Ethereum protocol, and the README is explicit about that: there is no single repository for the blockchain itself, only multiple client implementations in different languages. Anyone arriving here looking for a node, a wallet or a way to hold ETH is in the wrong repository, and the README says so in its own section.

The people this repository serves are contributors to a public information site. The README routes them through an issue first, then a fork, then a local environment, then a pull request, and it references CONTRIBUTING.md and CODE_OF_CONDUCT.md before any of that. There is a translation program documented in docs/translation-program.md, and the site ships content in many languages, so a large share of the work is prose rather than React. If you write TypeScript components for the site, the same workflow applies, but the repository is organised so that content edits do not require touching application code.

## Next.js, Markdown content and the i18n build switch

The stack is a Next.js application written in TypeScript, using Chakra UI and React, with Markdown as the primary language by file count. Content lives under public/content, and the lint script confirms the split: markdownlint-cli2 runs over public/content/**/*.md while explicitly excluding public/content/translations/**. That exclusion matters, because translated Markdown is not linted the same way as source content.

Language selection happens at build time. The README describes NEXT_PUBLIC_BUILD_LOCALES as the control: set it to en to build English only, set it to en,es to build English and Spanish, or comment the line out to build every language listed in i18n.config.json. The README calls English required when the variable is used. This is a build-time decision, not a runtime toggle, so the cost of a full multilingual build is paid once per build rather than per request.

Around the application sit several supporting pieces visible in the repository root: Netlify configuration (netlify.toml, netlify/), redirect maps (redirects.config.js, md-redirects.config.js), Storybook, Playwright test configs, Sentry configs for server and edge, and a data layer referenced from the environment example. Search is Algolia. Analytics and A/B testing are Matomo. None of these are optional for a full production build, which is why the environment file is long.

## Installing ethereum-org-website and running it on localhost:3000

The README recommends a Node version manager. The repository carries a .nvmrc file declaring the canonical Node version, so nvm use puts you on the right one before anything else runs.

```bash
nvm use
```

The project uses pnpm, and corepack is the recommended way to get it without a global install.

```bash
corepack enable
```

Then install dependencies from the repository root.

```bash
pnpm install
```

The README notes that on Ubuntu or Debian you may need sudo apt update && sudo apt install nodejs npm before corepack enable or pnpm install. It also documents migration from yarn: remove yarn.lock, remove node_modules, optionally run yarn cache clean, then pnpm install.

Environment variables come from the example file. Copy it before starting the dev server, because the app expects .env.local.

```bash
cp .env.example .env.local
```

Finally, start the development server and open localhost:3000.

```bash
pnpm dev
```

The README says your changes appear live at localhost:3000. For a faster production build, set NEXT_PUBLIC_BUILD_LOCALES in your .env file to a single language such as en. Leaving the line commented out builds every language in i18n.config.json. The package.json also exposes pnpm lint, pnpm type-check, pnpm test:unit and pnpm test:e2e, and Storybook runs on port 6006.

## Where the repository gets in your way

The environment file is the first real friction. .env.example lists Algolia search keys, a GitHub read-only token, an Etherscan key for the gas price table, Matomo URL and site ID, an optional Matomo API token, a FLAGS_SECRET, and a USE_MOCK_EXPERIMENTS flag. The file does provide DocSearch test keys for local development, which is more than many projects offer, but the gas price table and analytics paths still expect credentials that a casual contributor will not have. The README does not document which features degrade gracefully when a key is absent.

The multilingual default is the second friction. Building every locale in i18n.config.json is the default behaviour, and the README itself suggests narrowing it for faster production builds. That is the project acknowledging the cost rather than removing it. If your interest is the English content, remember to set NEXT_PUBLIC_BUILD_LOCALES=en or you will pay for languages you never read.

Package management is the third. The project moved to pnpm, and the README documents the yarn migration steps precisely because stale lockfiles and node_modules cause confusing failures. There is no npm path documented. If your tooling assumes npm, you are working against the repository's own instructions.

Finally, this is a website. If you want to query Ethereum, sign transactions or run a node, nothing here does that. The README directs that audience to the execution client implementations instead.

## How it compares with a docs framework like Docusaurus

The closest comparison is a documentation framework such as Docusaurus, and the difference is in what each assumes. Docusaurus is a general tool: you bring content, it gives you a docs site with versioning, sidebars and search. ethereum-org-website is the opposite shape. It is one specific site, with its own redirect maps, its own translation workflow, its own Algolia index and its own Matomo experiments, and the content is already in the repository.

That changes the adoption question. Choosing Docusaurus is choosing a foundation you will configure. Cloning ethereum-org-website is choosing a finished site you will edit. If you want a multilingual Next.js content site and you are willing to inherit its conventions, redirects and deployment assumptions, the repository is a working reference. If you want a framework to shape around your own product, a general docs generator will fit sooner, because you will not spend your first week removing Algolia, Matomo and Netlify configuration you never asked for.

The translation handling is the sharpest difference. This repository builds locales at build time through NEXT_PUBLIC_BUILD_LOCALES and keeps translations under a separate content path. A general framework typically treats i18n as a plugin you add. Neither is better in the abstract, but the ethereum.org approach is tuned for a site with a large volunteer translation program, and that tuning is visible in the file layout.

## Licence, maintenance and what an upgrade costs

The repository is MIT licensed, and package.json carries "license": "MIT" with "private": true. The private flag means the package is not published to a registry, so the MIT grant applies to the source you clone rather than to an installed dependency. That matters if you intend to reuse components: you can, under MIT terms, but you are copying from a private application, not consuming a versioned library. This is a description of the licence text, not legal advice; check the LICENSE file and your own obligations.

Maintenance signals are strong. The repository is not archived, the last push was on 2026-09-22, and releases v11.25.0, v11.24.5 and v11.24.4 landed on 2026-09-22, 2026-09-17 and 2026-09-17. The version field in package.json matches v11.25.0. There is a preversion script that runs src/scripts/updatePublishDate.sh, so publishing a version touches content dates as well as the version number.

Upgrade cost is dominated by the surrounding services rather than the framework. A major Next.js upgrade has to be reconciled with Chakra UI, Storybook, Playwright projects, Sentry configs and the Netlify edge functions under netlify/. The environment example is the checklist for what a deployment needs, and it is not short. If you fork this repository, budget for keeping those integrations current, because the site will not build without them.

## Conclusion

Adopt it if you are writing or translating Ethereum documentation for ethereum.org itself, or if you need a working example of a large multilingual Next.js content site. Do not adopt it as a wallet, a node, a trading tool or an embeddable widget; it is a website, and the README points blockchain developers to separate client implementations instead. Before your first pull request, verify that your Node version matches .nvmrc, that pnpm is active through corepack, and that .env.local exists, because pnpm dev will not start without it.

## FAQ

### Is ethereum.org the official Ethereum website, and is this repository that website?

The README describes ethereum.org as a resource for the Ethereum community and states the site's purpose as being the best portal to Ethereum. This repository is the code for that website, and the README separately notes that the Ethereum blockchain itself has no single repository, only multiple protocol implementations.

### How do I install ethereum-org-website and run it locally?

Enable corepack, run pnpm install, copy .env.example to .env.local, then run pnpm dev and open localhost:3000. The README recommends nvm use first, since .nvmrc declares the canonical Node version.

### Why does the ethereum-org-website build take so long, and how do I build only English?

By default the build covers every language listed in i18n.config.json. Setting NEXT_PUBLIC_BUILD_LOCALES=en in your .env file limits the build to English, which the README presents as the way to get faster production builds.

### Which package manager does ethereum-org-website use?

pnpm, enabled through corepack. The README includes a migration section for anyone coming from yarn: delete yarn.lock, delete node_modules, optionally clear the yarn cache, then run pnpm install.

## Sources

- [ethereum/ethereum-org-website on GitHub](https://github.com/ethereum/ethereum-org-website)
- [License: MIT](https://github.com/ethereum/ethereum-org-website/blob/dev/LICENSE)
- [Project website](https://ethereum.org/)
- [README](https://github.com/ethereum/ethereum-org-website/blob/dev/README.md)
- [Releases](https://github.com/ethereum/ethereum-org-website/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ethereum-ethereum-org-website
