HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
grawity
obml-parser
Python2020–2025
grawity / obml-parser

obml-parser

Opera Mini OBML "Saved pages" converter

4Distinct people
4Mentions
0Explicit recommenders
46GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Opera Mini OBML "Saved pages" converter

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year4 dated mentions

Observed mentions: 2020-10-15 17:02:20 UTC to 2025-05-29 15:43:17 UTC.

012020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

4 sources
This August 10 the service will have been online for 20 years. It's certainly the most long-lived service I ever co-created. I'll probably even feel a bit sad whenever they shut it down. The version launched in 2005 did simple line breaking in the client. It could only do what we called SSR (small-screen rendering), breaking up the site layout into a vertical strip. With version 4 in 2007 we moved to a model where font metrics are calculated/checksummed/uploaded if needed and then the layout happens on the servers using the full Presto engine. This enabled a full "iPhone-like view" (mobile-friendly web pages were a rarity back then - and being able too zoom in/out and pan around was exciting stuff). This is basically the protocol that's still running. Someone reverse-engineered the protocol here: https://github.com/grawity/obml-parser/b
Read the rest
lob/master/obml.md (I left about Opera about a decade ago.)
In The flip phone web: browsing with the original Opera Mini
I am reminded also of Opera Mini back in the day. It did not stream the DOM, but they were rendering pages on their servers and then using fancy compression techniques to deliver the rendered page to your mobile phone. This was a godsend back in the bad old days of slow mobile phone internet. I am talking about the Java ME application. Not the more recent browsers they’ve made. > It was primarily designed for the Java ME platform, as a low-end sibling for Opera Mobile > […] > The functionality of the Mini mode is somewhat different from a conventional Web browser, with the amount of data which has to be transferred much reduced, but with some loss to functionality. Unlike straightforward web browsers, Opera Mini fetches all content through a proxy server, renders it using the Presto layout engine, and reformats web pages into a format mor
Read the rest
e suitable for small screens. A page is compressed, then delivered to the phone in a markup language called Opera Binary Markup Language (OBML), which Opera Mini can interpret. According to Opera Software, the data compression makes transfer time about two to three times faster, and the pre-processing improves the display of web pages not designed for small screens. https://en.wikipedia.org/wiki/Opera_Mini Interestingly I found that someone has written a script to convert OBML to HTML. Their intended use-case for the script is to make pages saved with Opera Mini viewable in other browsers. But to me the main interest is that I would like some day to make something similar to Opera Mini on my own, and the README of the conversion script has some technical details about OBML. > because OBML files are the output of Opera's HTML rendering engine, many elements are pixel-positioned according to the original device's screen size and font metrics. Because many J2ME devices had custom fonts (optimized for low-res screens), it's possible that your computer will show the same text as too-tall or too-wide, and lines may overlap. > […] > OBML does not have <a href=...>, i.e. you cannot actually have text that is also a link. Instead the engine outputs text and links as two separate layers – first it places the actual text at position (X,Y), then overlays it with "link" rectangles at position (X,Y,W,H). > […] > OBML does not have styled widgets the way HTML would. The style is actually pre-rendered, and those pretty 3D effects are made out of pixel-positioned lines and rectangles. Even button gradients are pre-rendered and drawn as a series of 1-pixel thin lines. https://github.com/grawity/obml-parser
In Show HN: BrowserBox – do stuff with browsers that you can't normally
In my opinion when it came to democratizing access to internet across the world Opera Mini 4 had a significant impact. Phone internet was an awful experience in the 2000s era. I know different web protocol was launched like wap but that didn't help the experience tremendously. But then came Opera mini. It made access to internet easier, faster and more convenient specially in the third and second world country. I was trying to reuse a Nokia C1-01 classic with Opera Mini. Opera mini uses a file format called "obml" (Opera Binary Markup Language) to convert and save webpages. So, I figured I can bookmark web pages > convert to plain text html > convert to obml > then send to the feature phone via bluetooth and read the webpages on my feature phone. But then I came across how it really worked. The webpages were being rendered in a server th
Read the rest
en converted to a pixel position screen size specific file [1]. In my opinion it was an elegant solution considering the limitations of early phone internet. Truly a fascinating piece of software. [1] https://github.com/grawity/obml-parser
In Opera Mini
> very different to the likes of Opera Mini [...] In Cloudflare's case, the rendering happens on the server and only rasterization commands are sent to the clients. Literally exactly what Opera Mini has done since circa 2005[0]. The main difference here is that Opera Mini progressed to the gp's "2025" scenario quite some time ago by adding limited support for events alongside OBML's rasterization commands. [0] https://github.com/grawity/obml-parser/blob/master/obml.md
In Reimagining the Browser: Introducing Cloudflare Browser Isolation Beta

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.