A DevTools extension for inspecting Umbraco Backoffice element contexts. Works in Chrome and Firefox.
- Detects whether the current page is running an Umbraco Backoffice (v9–v14+).
- Element picker — click Select Element then click any element in the page.
- Injects
<umb-debug>as the first child of the selected element, placing it inside the element's Umbraco context tree. - Reads and displays the context data rendered by
<umb-debug>inside the DevTools panel, as a collapsible JSON tree and raw HTML view.
Works with:
- Umbraco 14 / Bellissima (Lit web-component back office)
- Clone / download this repository.
- Run
python3 generate-icons.pyto create the icons (or use the pre-generated ones inicons/). - Open Chrome →
chrome://extensions. - Enable Developer mode (top-right toggle).
- Click Load unpacked and select this folder.
- Open any Umbraco back office, open Chrome DevTools (
F12), and go to the Umbraco Debug tab.
Firefox requires manifest_firefox.json to be named manifest.json when loading the extension, because Firefox always reads manifest.json. The simplest approach:
- Clone / download this repository.
- Copy
manifest_firefox.jsonovermanifest.json(keep a backup of the original if you also use Chrome):cp manifest.json manifest_chrome.json cp manifest_firefox.json manifest.json
- Open Firefox →
about:debugging→ This Firefox. - Click Load Temporary Add-on… and select the
manifest.jsonfile inside this folder. - Open any Umbraco back office, open Firefox DevTools (
F12), and go to the Umbraco Debug tab.
Note: Temporary add-ons in Firefox are removed when the browser closes. For a persistent install, the extension would need to be signed via addons.mozilla.org.
| Action | Description |
|---|---|
| Select Element | Activates crosshair picker; click an element in the page |
| Escape | Cancel pick mode |
| Refresh | Re-read output from the injected <umb-debug> element |
| Clear | Remove the injected element and reset the panel |
| Copy | Copy the context data to the clipboard |
The Contexts tab shows a collapsible JSON tree of all Umbraco context providers visible to the selected element.
The Raw HTML tab shows the raw markup rendered by <umb-debug>.
┌─────────────────────────────────────────────┐
│ DevTools Panel (panel.html / panel.js) │
│ • UI, JSON tree, tab switching │
└──────────────┬──────────────────────────────┘
│ chrome.runtime.connect (port)
┌──────────────▼──────────────────────────────┐
│ Background Service Worker (background.js) │
│ • Routes messages between panel ↔ page │
└──────────────┬──────────────────────────────┘
│ chrome.tabs.sendMessage
┌──────────────▼──────────────────────────────┐
│ Content Script (content.js) │
│ • Detects Umbraco │
│ • Handles element picker (hover/click) │
│ • Injects <umb-debug data-umb-devtools> │
│ • Polls shadowRoot for rendered output │
│ • Sends data back to panel │
└─────────────────────────────────────────────┘
manifest.json MV3 manifest (Chrome)
manifest_firefox.json MV3 manifest (Firefox 109+)
devtools.html DevTools entry page
devtools.js Creates the DevTools panel tab
background.js Service worker / background script (message bridge)
content.js Injected into every page
panel.html DevTools panel markup
panel.css Panel styles (dark theme)
panel.js Panel logic & JSON tree renderer
generate-icons.py Script to regenerate icons from source
icons/ icon16/32/48/128.png