explaingit

python-eel/eel

6,750PythonAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

A small Python library for building desktop apps where HTML and JavaScript handle the interface and Python handles the logic, opening in a browser window that looks like a native app, note the project is effectively unmaintained.

Mindmap

mindmap
  root((eel))
    What it does
      Desktop apps in Python
      HTML and JS frontend
      Two-way function calls
    Features
      Python to JS calls
      JS to Python calls
      Return values
    Packaging
      PyInstaller support
      Chrome app mode
    Status
      Unmaintained
      Still functional
      MIT licensed
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add a graphical interface to a Python utility script using HTML and JavaScript instead of a GUI toolkit.

USE CASE 2

Combine a Python data library with a JavaScript chart to build a quick internal visualization tool.

USE CASE 3

Package a Python script with an HTML interface into a standalone desktop executable using PyInstaller.

Tech stack

PythonJavaScriptHTMLCSSChrome

Getting it running

Difficulty · easy Time to first run · 5min

Requires Chrome or Chromium installed on the user's machine, pip install eel is all that is needed to start building.

MIT-licensed, use freely for any purpose, including commercial projects, as long as you keep the copyright notice.

In plain English

Eel is a small Python library that lets you build a desktop application with a web-page interface, using HTML, CSS, and JavaScript for what the user sees, and Python for the logic running behind it. The result looks like a standalone app (it opens in a browser window without the usual browser controls) but is written with familiar web tools. The README notes that the project is effectively unmaintained and has not received updates in years, so it should be used with that in mind. The core idea is a two-way communication bridge. You mark Python functions with a decorator and they become callable from JavaScript. You can also call JavaScript functions from Python. This means the Python side can do things that a browser cannot, like reading files from the local filesystem or running number-crunching libraries, while the JavaScript side handles the visual presentation. The README specifically mentions that this makes it useful for combining Python data libraries with JavaScript charting libraries in small internal tools. Setup is minimal: install the package with pip, put your HTML and JavaScript files in a folder, and start the app with three lines of Python. By default Eel opens the app in Chrome or Chromium in a mode that hides the browser navigation bar to look more like a native app. The start function accepts options for window size, port, which browser to use, and a callback to run when the user closes the window. Function calls between Python and JavaScript can be done in a fire-and-forget style or with return values, using either callbacks or a synchronous blocking call. The README covers both patterns with examples. Eel is not intended for large or complex applications. The README positions it as a way to add a quick graphical interface to a Python utility script rather than a foundation for a full application. It can be packaged into a standalone executable using PyInstaller. The project is MIT-licensed.

Copy-paste prompts

Prompt 1
Using Eel, help me build a desktop app where a Python function reads a CSV file and sends the data to a JavaScript chart library to display in the window.
Prompt 2
Show me how to call a Python function from JavaScript using Eel and display the return value on the HTML page without reloading.
Prompt 3
Help me package my Eel app into a standalone Windows executable with PyInstaller so users do not need Python installed.
Prompt 4
Using Eel, build a simple folder-picker desktop app where the user selects a folder in the HTML interface and Python lists all files inside it.
Open on GitHub → Explain another repo

← python-eel on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.