Skip to main content

urllib_gui

urllib_gui is a small desktop client built with Tkinter and Python's standard-library urllib stack. It sits somewhere between a text browser, an API scratchpad, and a lightweight request inspector: you can open http, https, and file URLs, adjust request settings, inspect responses, and save the parts you want to keep.

The current app is intentionally modest. It renders HTML into readable text, not a full browser engine. There is no JavaScript execution, no DOM inspector, and no headless automation layer. The value here is a simple GUI around urllib, with very little magic and very few dependencies.

Current feature set

  • Open http, https, and file URLs in tabs.
  • Navigate with back, forward, reload, and open-in-new-tab flows.
  • Render HTML into readable text and follow extracted links inside the app.
  • Switch between Rendered, Source, Headers, and Request views.
  • Use the request drawer to change method, headers, body, timeout, redirects, proxy, TLS verification, cookies, and auth.
  • Preview the exact request before sending it.
  • Copy the current request as generated urllib code or as a curl command.
  • Save request templates to a scratchpad or export/import them as JSON.
  • Save response bodies or rendered text to disk.
  • Keep persistent browsing history, bookmarks, saved requests, and preferences.
  • Inspect and clear cookies from the active cookie jar.
  • Switch between light and dark themes and adjust rendering preferences.

Installation

Install from PyPI

With pipx:

pipx install urllib_gui

With pip:

pip install urllib_gui

Install the optional update-checking integration too:

pip install "urllib_gui[all]"

With pipx:

pipx install "urllib_gui[all]"

Install from source

git clone https://github.com/matthewdeanmartin/urllib_gui.git
cd urllib_gui
uv sync --all-extras

Requirements

  • Python 3.13 or newer
  • A working Tkinter desktop environment
  • Network access for http and https requests

If you are on a minimal Linux install, you may need to install the OS package that provides Tk before launching the app.

Running the app

Show CLI help:

urllib_gui --help

Launch the GUI:

urllib_gui

Open a URL immediately:

urllib_gui https://example.com

Start in dark mode:

urllib_gui --theme dark https://example.com

You can also launch it as a module:

python -m urllib_gui https://example.com

How to use it

Basic browsing

  1. Start the app and type a URL into the location bar.
  2. Press Enter or click Go.
  3. Use Back, Forward, and Reload as you would in a simple browser.
  4. Open local files with File -> Open File.

Supported schemes are currently limited to http, https, and file.

Request editing

Open View -> Toggle Request Options to show the request drawer. That drawer is where the application becomes more than a basic browser tab.

From the drawer you can:

  • choose standard HTTP methods or enter a custom one
  • add or remove headers, including preset groups
  • send raw text, form-urlencoded data, or JSON bodies
  • change timeouts
  • choose environment proxy settings, no proxy, or a manual proxy URL
  • disable TLS verification when needed
  • enable or disable cookies
  • use Basic auth, Bearer auth, or a custom Authorization header
  • preview the exact request before sending it

The CLI only launches the GUI and optionally seeds the starting URL and theme. Request customization happens inside the desktop app.

Optional update checks

urllib_gui can integrate with do_i_need_to_upgrade, but that support is intentionally optional so the base install stays lean.

If installed with urllib_gui[all]:

  • the GUI quietly checks for updates on startup and shutdown
  • terminal notices can appear during normal app usage
  • urllib_gui upgrade
  • urllib_gui check-updates

If the extra is not installed, urllib_gui still runs normally and simply skips the update-check feature.

Response inspection

Use the view selector or the View menu to switch between:

  • Rendered: HTML converted to readable text with clickable links
  • Source: decoded response body
  • Headers: status line and response headers
  • Request: a readable request preview

For HTML responses, the built-in renderers are:

  • stdlib_html_links
  • stdlib_html_text
  • plain
  • html_source

If compatible third-party packages are installed, additional renderers are discovered automatically.

Saving and exporting

The app includes a few persistence and export tools:

  • Bookmarks can be added, edited, searched, tagged, imported, and exported as JSON.
  • History is stored in SQLite and can be searched or cleared.
  • Request scratchpad stores named request templates in SQLite.
  • Request files can be exported to JSON and loaded back later.
  • Copy as urllib Code generates a Python snippet.
  • Copy as curl generates a best-effort curl equivalent.
  • Save Response Body As... writes raw bytes to disk.
  • Save Rendered Text As... writes the rendered text view to disk.

Preferences and stored data

Preferences are stored under ~/.urllib_gui/, alongside the app's local data files:

  • config.ini
  • history.sqlite3
  • bookmarks.sqlite3
  • saved_requests.sqlite3

From the Preferences dialog you can change theme, font settings, link-opening behavior, default timeout, default user agent, cookie behavior, TLS verification, proxy defaults, auth defaults, render engine, and default encoding.

Keyboard shortcuts

  • Ctrl+L focus the location bar
  • Ctrl+T new tab
  • Ctrl+W close tab
  • Ctrl+R reload
  • Alt+Left back
  • Alt+Right forward
  • Ctrl+D bookmark current page
  • Ctrl+S save the current response body
  • Ctrl+F find in page
  • Ctrl++, Ctrl+-, Ctrl+0 zoom controls

Documentation

Project docs live in docs/ and are built with MkDocs for Read the Docs. The docs cover installation, day-to-day usage, request workflows, and contributing.

Contributing

See CONTRIBUTING.md for the local workflow, quality gates, and how CI is wired.

License

MIT - see LICENSE.

Changelog

See CHANGELOG.md.

Project Links

Metadata

Release files for urllib-gui 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for urllib-gui 0.2.0
File Size Uploaded
urllib_gui-0.2.0.tar.gz 47.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for urllib-gui 0.2.0
File Interpreter ABI Platform
urllib_gui-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 105.6 kB

Release files / urllib_gui-0.2.0.tar.gz

Download URL urllib_gui-0.2.0.tar.gz
Size 47.3 kB
Tags Source
SHA-256 checksum
How to use checksums
741a20d73b304ae9d3612a900d68b6a17880bed157d5a4e71d2d0679273d6f55
BLAKE2b-256 checksum
How to use checksums
a3e17b1c5568fdd3c41b2b1013850776831d277dad5225aa0ac7a6480429abbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 3, 2026.

Transparency log

Release files / urllib_gui-0.2.0-py3-none-any.whl

Download URL urllib_gui-0.2.0-py3-none-any.whl
Size 58.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
020dbc34f44f84814762e14d0ca7286d55bb81c9be02e34a61aaec2d7b3bd017
BLAKE2b-256 checksum
How to use checksums
af620fd492e0b4b339cd0f0c01c805102b934f289da723109e33f172f149611d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page