Comparison
@ulpi/browse vs browser-use
browser-use is a Python library for AI agent web browsing. @ulpi/browse is a TypeScript CLI. browse has 3x more features, uses 2.4x fewer tokens, and runs 2.5x faster.
TL;DR
Choose @ulpi/browse if you need
- - 152 features vs 51 (3x more capabilities)
- - 2.4x fewer tokens per session
- - 2.5x faster multi-step flows (28.5s vs 72.7s)
- - Node.js ecosystem (works with any AI agent)
- - @ref workflow, React DevTools, sessions
Choose browser-use if you need
- - Python-native integration
- - Simple API for basic browsing
- - Existing Python AI agent stack
Feature-by-feature comparison
| Feature | @ulpi/browse | browser-use |
|---|---|---|
| Language | TypeScript (Node.js) | Python |
| Token efficiency | 11,388 tokens/session | 27,331 tokens/session |
| Speed (10-action flow) | 28.5s | 72.7s |
| Total features | 152 | 51 |
| @ref element selection | ||
| Accessibility tree | ||
| Click / Fill / Select | ||
| Keyboard input | ||
| Tab management | ||
| Screenshot | ||
| Back / Forward / Reload | ||
| Hover / Focus / Drag | ||
| File upload | ||
| Wait conditions | ||
| Session multiplexing | ||
| Persistent profiles | ||
| React DevTools | ||
| Handoff protocol | ||
| Network mocking | ||
| HAR/Video recording | ||
| PDF export | ||
| Encrypted credential vault | ||
| Content boundaries | ||
| Domain allowlist | ||
| Device emulation (100+) | ||
| Cookie import from browsers |
Speed comparison
browse completes a standardized 10-action browsing session in 28.5 seconds vs browser-use's 72.7 seconds — 2.5x faster. browse achieves this through its persistent daemon architecture: the server starts once, and each subsequent command executes in ~100ms over HTTP.
# browse: persistent daemon — ~100ms per command
$ browse goto https://example.com # Server already running
Navigated (200) — 95ms
# browser-use: Python process per action
# Each action: import library → start browser → execute → close
# Overhead: ~5-7 seconds per actionMigrating from browser-use
If you're using browser-use in a Python AI agent, you can switch to browse without changing your agent framework. browse is a CLI — call it from any language via subprocess or HTTP.
# Install
npm install -g @ulpi/browse
# browser-use (Python):
# browser.goto("https://example.com")
# elements = browser.get_elements()
# browser.click(elements[0])
# @ulpi/browse (CLI — works from any language):
browse goto https://example.com
browse snapshot -i # @e1 [button] "Submit", @e2 [link] "Home"
browse click @e1 # Click by ref — no element indexing needed