Browser extension that increments the page number in the current tab's URL and navigates to the result — no manual URL editing needed.
Click the toolbar button (+1) on any paginated URL. The extension finds the most relevant number, adds 1, and navigates the current tab to the new URL. If no suitable number is found the click is a silent no-op.
-
Page-like query param — param name matches a pagination keyword (
page,paged,pagenum,page_num,page_no,pageno,current_page,pg,p) and value is a pure integer → that param is incremented.?page=3&sort=asc→?page=4?sort=asc&p=7→?p=8
-
Last numeric query param — last query param whose value is a pure integer → that param is incremented.
?foo=2&bar=5→?bar=6
-
Page-preceded path segment — rightmost pure-numeric path segment whose immediate predecessor matches a page keyword (
page,pg,p,pagina,seite) → that segment is incremented./page/4/detail→/page/5/detail
-
Last pure-numeric path segment — rightmost path segment that is entirely a number → incremented.
/articles/42→/articles/43
-
Last numeric substring in a path segment — rightmost segment containing any digits → last numeric run in that segment is incremented.
/products/item-007→/products/item-008
-
No match → silent no-op; current URL unchanged.
Note: This is a developer installation (unpacked). The extension is loaded directly from the source folder. No store listing is available yet.
- Open
chrome://extensions - Enable Developer mode (toggle, top-right)
- Click Load unpacked
- Select the
plusonefolder (the one containingmanifest.json)
- Open
about:debugging - Click This Firefox
- Click Load Temporary Add-on…
- Navigate to the
plusonefolder and selectmanifest.json
Note: Firefox temporary add-ons are a developer installation — they are removed on browser restart. For a persistent install, the extension must be signed and distributed via addons.mozilla.org.
The toolbar button icon is drawn automatically at runtime — no PNG files are required for the extension to work.
If you want icons to appear on the extensions management page or in a store listing:
- Open
icons/generate-icons.htmlin any browser. - Click Generate & Download Icons — three PNG files (
icon16.png,icon48.png,icon128.png) will download automatically. - Move the downloaded files into the
icons/folder. - Add the
"icons"field tomanifest.jsonas shown on the page. - Reload the extension.
| Browser | Minimum version | Notes |
|---|---|---|
| Chrome | 99+ | MV3 service worker background |
| Firefox | 109+ | MV3 with background.scripts |
| Edge | 99+ | Chromium-based; same as Chrome |
| Permission | Why it is needed |
|---|---|
activeTab |
Read the URL of the current tab when the toolbar button is clicked |
tabs |
Navigate the current tab to the incremented URL via chrome.tabs.update |
storage |
Persist custom URL rules via chrome.storage.sync |
No host permissions, no remote code, no data collection.
- Right-click the +1 toolbar icon → Options
- Or: browser extension management page → Details → Options
The options page lets you define custom URL rules that override the built-in number-detection logic.
Each rule maps a URL pattern to a key name. When the extension fires on a matching URL it uses that key — rather than running the A1→A2→B1→B2→B3 priority chain — to find and increment the number.
| Column | Description |
|---|---|
| URL Pattern | Glob-style pattern matched against the full URL. Use * as a wildcard for any sequence of characters. |
| Key Name | GET query-param name or path segment that immediately precedes a numeric path segment. |
- Add Rule — appends a blank row; fill in both columns.
- ✕ (delete button on each row) — removes that row.
- Save — persists all rows to
chrome.storage.sync; a brief "Saved!" confirmation appears.
Rules are checked top-to-bottom; the first match wins.
User rules are evaluated before the built-in priority chain, so any matching rule takes full precedence.
| URL Pattern | Key Name | Effect |
|---|---|---|
* |
abc |
/abc/4/haha → /abc/5/haha; ?abc=3&haha=2 → ?abc=4&haha=2 |
https://example.com/* |
page |
?page=3 → ?page=4 |
https://shop.com/items* |
p |
?p=2 → ?p=3 |
*matches any characters (zero or more), including/,?,=, and&.- The pattern is tested against the full URL — protocol, domain, path, and query string.
- A pattern of
*matches every URL. - A pattern of
https://example.com/*matches any URL that starts withhttps://example.com/.
plusone/
├── manifest.json Extension manifest (MV3)
├── background.js Service worker: icon rendering + URL logic + click handler
├── options.html Settings/options page UI
├── options.js Settings page logic (load/save user rules)
├── icons/
│ └── generate-icons.html Optional: generates PNG icons via canvas
└── README.md This file