Skip to content
A Ruby library for METAR weather reports
Ruby Shell
Latest commit c7d3d2c May 1, 2016 @joeyates Version bump for release
Failed to load latest commit information.
doc add proper support for Canadian corrections Apr 13, 2015
script Apply Rubocop suggestions Apr 14, 2016
.rubocop.yml Apply Rubocop suggestions Apr 14, 2016
Gemfile Document the new Raw::Metar class in the README Apr 11, 2016
Rakefile Apply Rubocop suggestions Apr 14, 2016

metar-parser Build Status

Get latest weather reports from weather stations worldwide

The information comes from the National Oceanic and Atmospheric Association's raw data source.


require 'metar'


Hello World

This prints the latest weather report for Portland International Airport:

station = Metar::Station.find_by_cccc('KPDX')

Using Your Own Raw Data

The parser needs to know the full date when the reading was taken. Unfortunately, the METAR string itself only contains the day of the month.

When you know the date of the reading

Use Metar::Raw::Data and supply the date as the second parameter:

metar_string = "KHWD 280554Z AUTO 29007KT 10SM OVC008 14/12 A3002 RMK AO2 SLP176 T01390117 10211\n"
raw    =, reading_date)
parser =

When you do not know the date

Use Metar::Raw::Metar - the library will choose the date as the most recent day with the day of the month indicated in the METAR string:

I.e. on 11th April 2016:

metar_string = "KHWD 280554Z AUTO 29007KT 10SM OVC008 14/12 A3002 RMK AO2 SLP176 T01390117 10211\n"
raw    =
raw.time.to_s                              # => "2016-03-28"
parser =

Access Specific Data

station = Metar::Station.find_by_cccc('KPDX')
parser  = station.parser
puts parser.temperature.value


List countries:

puts Metar::Station.countries

Find a country's weather stations:

spanish = Metar::Station.find_all_by_country('Spain')


Translations are available for the following languages (and region):

  • :de
  • :en
  • :'en-US'
  • :it
  • :'pt-BR'
  • Thanks to the I18n gem's fallback mechanism, under regional locales, language generic translations will be used if a region-specific translation is not available. I.e.
I18n.locale = :'en-US'
I18n.t('metar.station_code.title') # station code


By default, the parser runs in 'loose' compliance mode. That means that it tries to accept non-standard input.

If you only want to accept standards-compliant METAR strings, do this:

Metar::Parse.compliance = :strict



This version introduces a major change to the Metar::Raw class.

Previously, this class downloaded METAR data from the NOAA FTP site. The old functionality has been moved to Metar::Raw::Noaa. The new class, Metar::Raw::Data accepts a METAR string as a parameter - allowing the user to parse METAR strings without necessarily contacting the NOAA.


Alternative Software


Other Ruby libraries offering METAR parsing:

There are many reports (WMO) that these libraries do not parse.

There are two gems which read the National Oceanic and Atmospheric Association's XML weather data feeds:


Something went wrong with that request. Please try again.