More precise than Swiss Ephemeris
Planets, Sun and Moon come straight from the NASA/JPL DE441 and DE442 coefficients, copied bit for bit. Physical positions match JPL Horizons to 0.0005″ for years 0 to 1550.
Open source. Commercial use with a one time USD 200 licence.
Used by professional astrologers and developers
Python 3.9+ wheels for Linux, macOS and Windows. Free under the AGPL-3.0.
Chart speed measured in October 2026 on an Apple M4 with per body calls; the batch API is 7 to 9× faster. Method, sample sizes and the commands to reproduce each figure are in the engine report.
High precision, speed and ready for production.
Planets, Sun and Moon come straight from the NASA/JPL DE441 and DE442 coefficients, copied bit for bit. Physical positions match JPL Horizons to 0.0005″ for years 0 to 1550.
The swe_compat module keeps the call names, flags and return shapes astrology code already uses, such as calc_ut, houses, set_sid_mode and fixstar2.
No global mutable state. Sidereal mode, observer and Delta T settings live per thread and per asyncio task, so concurrent web requests never leak settings into each other.
About 500,000 positions per second one call at a time from Python, and about 4.5 million per second through the NumPy batch API, which releases the GIL.
Western, Vedic and KP astrology apps all rely on the same building blocks. French Ephemeris gives you all of them.
Planets, houses, aspects, nodes and Lilith for any date and place, in the house system your users ask for.
Sidereal positions in 46 ayanamsas, including Lahiri, Raman and Krishnamurti, ready for kundli, dashas and divisional charts.
Compute two charts in microseconds and compare them, so matching runs live as people swipe or search.
Exact aspects, ingresses, stations and returns, found by search, to drive notifications and timelines.
New and full moons, phases, eclipses, rise and set times for the user's location.
The NumPy batch API computes millions of positions per second to prepare content for every sign and every day.
Serve your iOS and Android apps from a Python or Rust backend, or ship the Rust core with the 2 MB mobile data set (1800 to 2400) to compute charts offline inside the app.
French Ephemeris is an independent implementation written from published sources. On charts from 1800 to 2100 it agrees with Swiss Ephemeris 2.10 to within 0.07″ for the Sun and 0.83″ for the Moon, with no sign or retrograde changes in 8,400 samples.
French Ephemeris ahead on 9 points, Swiss Ephemeris on 3, tied on 3.
| French Ephemeris | Swiss Ephemeris | |
|---|---|---|
| Planetary data | JPL DE441 and DE442 bit for bit, within 0.0005″ of JPL Horizons for years 0 to 1550 | Compressed copy of JPL data |
| Speed, 10 body chart | 15 µs | 55 µs |
| Speed, one call | 502,000 positions per second | 313,000 positions per second |
| Batch calculations | 4.46 million positions per second with NumPy, without the GIL | One call per body and time |
| Threads | Settings kept per thread and per async task | Settings shared by the whole process |
| Smallest data for 1800 to 2400Tie | 2.03 MB (mobile set) | 2.12 MB |
| House systemsTie | 24 | 24 |
| Fixed stars | 8,969: every naked-eye star (V ≤ 6.5), Hipparcos 2007 positions | About 1,200 objects |
| Ayanamsas | 46 modes, plus user defined | 47 modes, plus user defined |
| Languages | Python, Rust and JavaScript (npm) | C, with bindings for many languages |
| Track record | First public release in 2026 | Industry standard since 1997 |
| Licence | AGPL-3.0, or USD 200 one time per company | AGPL, or a professional licence at CHF 700 |
Speeds measured on an Apple M4 against pyswisseph 2.10.3.2. Method, sample sizes and the commands to reproduce every figure are in the engine report.
Swiss Ephemeris is a product of Astrodienst AG. French Ephemeris is not affiliated with or endorsed by Astrodienst.
Free
For open source projects, research, teaching and any product that meets the AGPL, including publishing the source of modified versions you offer over a network.
USD 200 one time, per company
For closed source apps, APIs and SaaS. Unlimited products, developers and end users, and every future version included.
Paid securely through Stripe. You receive an invoice by email and your licence certificate within two business days. Questions or a bank transfer: [email protected].
French Ephemeris (Python package frenchephemeris) is a high precision, high performance open source ephemeris and astrology geometry library written in Rust with Python bindings. It computes planetary, lunar and minor body positions from NASA/JPL ephemerides (DE441/DE442), plus houses, ayanamsas, lunar nodes and Lilith, fixed stars, rise and set times, eclipses, occultations and heliacal events.
Yes for most code. The frenchephemeris.swe_compat module mirrors pyswisseph style calls such as calc_ut, houses, set_sid_mode and fixstar2, so most code moves over by changing the import. On charts from 1800 to 2100 it agrees with Swiss Ephemeris 2.10 to within 0.07″ for the Sun and 0.83″ for the Moon, with no sign or retrograde changes in 8,400 samples. It is not affiliated with the Swiss Ephemeris or Astrodienst.
It reads the JPL DE441 and DE442 coefficients directly, so physical positions match JPL Horizons to 0.0005″ or better for years 0 to 1550 and within 0.13″ (inner planets, Sun and Moon) after 1550. Its eclipse search finds every solar and lunar eclipse of the NASA Five Millennium Canons for years 0 to 2400, with no spurious events or type mismatches. Method and sample sizes are published in the engine report on GitHub.
Yes, under the GNU AGPL-3.0, provided you meet its conditions, including publishing the source of modified versions you offer over a network. If you want to keep your product closed source, a commercial licence costs USD 200 once per company, covers all future versions and unlimited end users.
None to start: the package includes a compact data set for years 0 to 2400 (planets within 0.007″ of JPL, Moon within 0.4″). Run python -m frenchephemeris.packs download to add JPL's exact numbers for 1800 to 2401 (about 69 MB, SHA-256 checked), or --set full for years −2 to 2581 (256 MB). Optional packs extend the range to years −13198 to 17190 and add 326 commonly used asteroids.
Yes. The engine is immutable and has no global mutable state. Sidereal mode, topocentric position and Delta T settings are kept per thread and per asyncio task, so concurrent requests cannot change each other's results. Batch calls release the Python GIL and run across cores.
Python 3.9 and later, with prebuilt wheels for Linux (x86_64 and aarch64), macOS (Intel and Apple Silicon) and Windows. The Rust crate fe-core is in the same repository and can be used directly from Rust.
No. FreeAstroAPI already runs every calculation on French Ephemeris. Use the library when you want to compute positions inside your own application or servers; use the API when you want ready made charts, interpretations and reports over HTTP.
Install it from PyPI, or skip the setup and call the same engine through the FreeAstroAPI REST endpoints.