A headless browser is a full-featured browser running without GUI. Everything works normally — JavaScript executes, pages render, cookies persist — there is just no window for anyone to see.
Advantages vs headed (with GUI):
- ~30-50% faster (no rendering to screen)
- ~40% less RAM
- Works in display-less environments (Docker, CI/CD, headless servers)
- Can run many instances in parallel
Detection problem: Anti-bot systems easily detect vanilla headless mode — flag navigator.webdriver = true, missing chrome.runtime, inconsistent fingerprints. Production scrapers use playwright-extra + stealth plugin to hide headless flags.
All modern tools (Playwright, Puppeteer, Selenium) support both modes — headless and headed. Headed used in development for debugging, headless in production.