Short answer: custom firmware replaces the software your router came with. Asuswrt-Merlin is a third-party alternative for ASUS routers; OpenWrt is a separate project that supports the devices listed in its Table of Hardware. Check the project’s supported-device list before anything else, and see our view on who it suits below.

What custom firmware is

Firmware is the software that runs your router. Custom firmware replaces the maker’s version with one built by an independent project. The two names you’ll see most are Asuswrt-Merlin and OpenWrt.

Asuswrt-Merlin and OpenWrt

Asuswrt-Merlin OpenWrt
What it is Third-party alternative firmware for ASUS routers An independent firmware project
Which routers ASUS models on its release list Devices listed in its Table of Hardware
How you install Flashed like an ASUS update, per the project Following OpenWrt’s guide for a supported device

Asuswrt-Merlin describes itself as third-party alternative firmware for ASUS routers, with a special emphasis on tweaks and fixes. The project says you install it like an original firmware update, and that your existing settings are preserved.

OpenWrt keeps a Table of Hardware listing the devices it supports, and points owners of supported devices to its installation guidance.

Check support first

Support is model by model, so look before you buy or flash.

  • Merlin: the project’s homepage lists the models it currently builds for. As of October 2026, its release table includes the RT-BE88U, for example.
  • OpenWrt: search the Table of Hardware for your exact model. OpenWrt states “No support for 4 MB FLASH / 32 MB RAM devices” in releases from 18.06 onwards, so a router with that little memory isn’t a candidate.

Keeping the maker’s firmware instead

If you just want reliable Wi-Fi, stay with the maker’s firmware and keep it updated: see how to update your router firmware. If your router no longer gets updates from its maker, read when to replace your router before deciding that custom firmware is the answer. And if lag when the connection is busy is what bothers you, read about bufferbloat first.