Skip to content(if available)orjump to list(if available)

Wttr: Console-oriented weather forecast service

Duanemclemore

This is pretty rad.

I'm surprised no one's made a CEEFAX replica for the terminal yet [0]. Their weather page is pretty iconic [1].

[0] There are CEEFAX Emulators online that pull from the BBC RSS feeds to do this.

[1] https://teletextart.co.uk/wp-content/uploads/2016/05/weather...

JdeBP

Strictly speaking, one couldn't do it properly, rendering the pages as actual text for TUIs rather than graphically for GUIs, until Unicode version 13 came along, which included the necessary block graphics characters and which was only 5 years ago.

And even then one needs modern fonts like Viznut's Unscii or GNU Unifont or which cover the necessary code points (or one of the terminal emulators that algorithmically constructs block and line characters, and has been updated for Unicode 13).

* https://github.com/jdebp/unscii/blob/2.1.1f/src/grids.txt#L4...

* https://github.com/jdebp/unscii/blob/2.1.1f/src/grids.txt#L9...

swores

Even if it couldn't be perfectly replicated, I'm sure it could've been done in some way before - after all, it's almost 20 years since someone set up a telnet service which broadcast football World Cup games as converted ascii "video" generated live from the TV broadcasts! https://www.freshandnew.org/2006/06/watch-the-world-cup-in-a...

(And I actually remember it being surprisingly watchable, you could follow what was happening in the game even though you couldn't judge stuff like players' ball control or anything like that.)

section_me

There is kind of one now https://github.com/shift/ceefax-weather :D

frumiousirc

What took you so long?!

rjh29

Have you actually run it?

swores

It would be strange if they used AI to create it, published on GitHub, and shared on HN, but didn't bother running it once...

section_me

Of course I have. It's nothing impressive and far from a 100% clone of the CEEFAX page. But its a start if someone wanted to take it further. I was more interested in trying out ratatui with Gemini.

PokemonNoGo

That is pretty. Can you link? Took me a moment to realise it wasnth July 20th yet. Can't imagine the weather was like that 9 years ago!

JdeBP

You need some U.K.-specific knowledge, which is that CEEFAX went off air in 2012. If you see a screenshot of genuine CEEFAX (not one of the several modern things that pretend to be teletext) it will be from before 2012, possibly from long before as it was a service embedded in analogue PAL broadcasts that was capturable as page text (with all of the control characters) by BBC Micro users (who had bought the Acorn "Teletext Adapter") as long ago as the early 1980s.

PokemonNoGo

Bummer, thanks for the reply!

vesinisa

July 20, 2016 was a Wednesday and the screencap shows Friday. First 20 July Friday before 2016 is Friday 20 July 2012.

No idea how to pull historical UK weather data to see if it matches :)

yoavm

That's a niche within a niche, I know, but for those using Waybar (https://github.com/Alexays/Waybar/), I've built wttrbar (https://github.com/bjesus/wttrbar/) - it uses Wttr.in to display a nice detailed weather widget in your bar.

runjake

Hey, I use and love this widget. Thanks for building and releasing it!

dghf

Thank you! I was just thinking "how do I get this to display in Waybar", and now I don't have to spend time working on it.

EDIT: this is particularly timely because the UK Met Office has recently announced the retirement of the API I was previously using: https://www.metoffice.gov.uk/services/data/datapoint/datapoi...

Langdal

I really like the idea, but the data quality for my city (Trondheim, Norway) was unfortunately too off for me to use.

The national forecast service (yr.no) is saying it will be sunny and very hot all through the weekend, while wttr reports it will be 16-19 degrees Celcius and rain on saturday.

lioeters

Years ago I was recommended yr.no for weather forecasts, and I visit it often.

I wonder what's special about Norway's meteorologists that they have exceptionally good quality data and ability to build and run a useful public service.

obfuscator

yr.no is the best for my location (northern Germany) as well.

Many locals use DWD (German Weather Service).

A lot of the German sailors use dmi.dk (Danish meteorological institute).

A lot of the Danish sailors use yr.no :)

incognito124

+1 for yrno, I'm a long time user. Their prediction got a bit worse over the last 2-3 years (like error variance is now larger), but anecdotally other providers' predictions got even more bad

lnenad

Yr is generally very accurate. I am from Serbia and I use it as well.

pixelbeat__

Note the terminal -> HTML conversion used to serve wttr.in is based on https://github.com/pixelb/scripts/blob/master/scripts/ansi2h...

acaloiar

Wttr is an essential in my i3bar: curl -s 'https://wttr.in/Revelstoke,BC?format=4&u'

knadh

Weather over DNS

  dig london.weather @dns.toys

rollcat

    curl wttr.in/London > london.txt
    open -a TextEdit london.txt
Witness the control code garbage.

IMHO you should not emit ANSII escape sequences until you at least call isatty, preferably also consult termcap. But also IMHO we should bury the terminals, and build better REPLs and lightweight GUI toolkits.

throwaway150

> IMHO you should not emit ANSII escape sequences until you at least call isatty, preferably also consult termcap.

How exactly do you propose that wttr.in, which is not actually a process running on your machine (but a remote server), call isatty() on your machine?

Or are you suggesting that curl should check isatty() and strip out the control codes? But that would be overstepping curl's responsibilities, wouldn't it? Its job is to faithfully output the response, garbage or not.

rollcat

> How exactly do you propose that wttr.in, which is not actually a process running on your machine (but a remote server), call isatty() on your machine?

That's exactly my point. You can't do that.

    $ curl --head -s wttr.in/London | grep Content-Type
    Content-Type: text/plain; charset=utf-8
This is not plaintext, this is ANSII garbage. If you're outputting HTML, you set the content type to text/html, so the client can interpret it. But the lack of an associated content type is not the problem, it's the blind assumptions about the capabilities of the client.

throwaway150

Thanks for clarifying. You're right! The output isn't actually text/plain. As someone who values standards, it is annoying to see control-code garbage when the content type claims to be text/plain. But wttr.in seems more like a fun novelty than a serious service and I suspect they don't pay much attention to standards. Still, I'm not sure that excuses saying one thing in the headers and delivering something else in the body.

But you've got a fair point. So thanks!

klinch

Agreed, but but what would the right content type even be? Afaik there's no `text/tty` or `text/with-control-characters` etc. On the other hand, using the generic `application/octet-stream` seems unnecessarily vague?

null

[deleted]

lblume

This is a web API that does not have access to your local computer.

felipelemos

AND you can disable the ANSI control code:

```

To force plain text, which disables colors:

$ curl wttr.in/?T

```

lblume

You can also just change the format to whatever suits you best.

edarchis

I love this one, it's excellent at packing lots and lots of information in very little space.

It's sadly victim of its success and is quite often over quota to its weather API. We should make a paid version that wouldn't have this problem and bring some monetary karma to Igor

NoboruWataya

> As of the end of June 2025, wttr.in handles 20-25 million queries per day from 150,000 to 175,000 users, according to the access logs.

No wonder! That works out at about 133-143 requests per user per day. Presumably due to scripts refreshing their data 24/7.

Another solution is just to host it yourself, given the code is open source. No quota worries, and you can always donate to Igor if you feel so inclined (assuming he wants/accepts donations).

0cf8612b2e1e

I get unreasonably angry at people in inconsiderately hammering web services. Especially for some minor operation built on nothing but love.

PhilippGille

Unfortunately 3-letter airport codes don't work as advertised, because for many airport codes there are actual cities with the same 3-letter name and those take precedence in their lookup.

Multiple GitHub issues around this have been opened already.

Otherwise pretty neat of course!

krylon

I really appreciate this service.

Worth pointing out, maybe, that there is an emacs package, too - more than one, actually, the one I am using (occasionally, at least) is https://github.com/cjennings/emacs-wttrin which is available from melpa.

pvdebbe

Kinda neat. One UX gotcha that I spot right away. I'm polling weather for my area (UTC+3) and it gives me some night time values even though it's noon. I'm thinking timezones?

voidUpdate

This is cool, but it seems to give different results for my city depending on whether I use the normal view or the v2 or ?format views. The current weather is closer to the normal view