# BeerXML

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/BeerXML
> Markdown URL: https://mediated.wiki/source/BeerXML.md
> Source: https://en.wikipedia.org/wiki/BeerXML
> Source revision: 1337582847
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{Short description|Markup language}}
{{stack|
{{Infobox file format
| icon =
| logo =
| screenshot = 200px
| extension = .xml
| mime = <code>application/xml</code><ref>{{cite web |url=http://tools.ietf.org/html/rfc3023#section-3.2 |title=XML Media Types, RFC 3023 |pages=9–11 |publisher=Internet Engineering Task Force |date=January 2001 |accessdate=2010-01-04 |last1=St. Laurent |first1=Simon |last2=Makoto |first2=Murata |last3=Kohn |first3=Dan }}</ref><br/><code>text/xml</code><ref>{{cite web |url=http://tools.ietf.org/html/rfc3023#section-3.1 |title=XML Media Types, RFC 3023 |pages=7–9 |publisher=Internet Engineering Task Force |date=January 2001 |accessdate=2010-01-04 |last1=St. Laurent |first1=Simon |last2=Makoto |first2=Murata |last3=Kohn |first3=Dan }}</ref>
| type code =
| uniform type = public.xml
| conforms to = public.text
| magic =
| owner = 
| genre = [Markup language](/source/Markup_language)
| container for =
| contained by = [XML](/source/XML)
| extended from = [SGML](/source/Standard_Generalized_Markup_Language)
| standard = 1.0
| open = Yes
}}|
{{Infobox technology standard
| title             = BeerXML
| status            = Published
| year_started      = 2005
| editors           = Brad Smith, Drew Avis, Michael Taylor, Andrew Perron, David Johnson
| base_standards    =
| related_standards = [XML Schema](/source/W3C_XML_Schema)
| abbreviation      =
| domain            = [Data serialization](/source/Serialization)
| website           = [http://www.beerxml.com BeerXML]
}}
}}

'''BeerXML''' is a free, fully defined [XML](/source/XML) data description<ref>{{cite web|title=BeerXML An XML Standard for Beer Brewing Data Version 1.0|url=http://www.beerxml.com/beerxml.htm|work=BeerXML.com|publisher=BeerXML group|accessdate=14 February 2014}}</ref>  [standard](/source/Technical_standard) designed for the exchange of [beer](/source/beer) brewing recipes<ref>{{cite web|last=Johnston|first=Casey|title=A computerized beer machine takes the legwork out of home-brewing|url=https://edition.cnn.com/2013/10/10/tech/innovation/beer-machine-kickstarter-arduino/|work=CNN.com|date=10 October 2013 |publisher=CNN/Turner|access-date=15 February 2014}}</ref>  and other [brewing](/source/brewing) data. Tables of recipes as well as other records such as [hop](/source/Humulus_lupulus) schedules and [malt](/source/malt) bills can be represented using BeerXML for use by brewing [software](/source/software).

BeerXML is an [open standard](/source/open_standard) and as a [subset](/source/subset) of '''Extensible Markup Language''' ('''XML'''). BeerXML is a [markup language](/source/markup_language) that defines a set of rules for encoding documents in a [format](/source/file_format) that is both [human-readable](/source/human-readable_medium) and [machine-readable](/source/Machine-readable_data).

BeerXML is supported by a number of web sites, [computer](/source/computer) programmes<ref>{{cite web|last=Revell|first=Matthew|title=Beer as in beer|url=http://blog.launchpad.net/projects/beer-as-in-beer|work=launchpad.net|publisher=Launchpad|accessdate=19 February 2014}}</ref><ref>{{cite web|title=Mise à jour : JolieBulle 2.9 - Importation d'une liste d'ingrédients. Il est maintenant possible d'importer une liste d'ingrédients au format BeerXML|url=http://joliebulle.tuxfamily.org/mise-a-jour-joliebulle-29.html|publisher=Tuxfamily.org|accessdate=15 February 2014|language=French}}</ref>  and an increasing number of Android,<ref>{{cite web|title=BeerXML apps on Google Play|url=https://play.google.com/store/search?q=beerxml&c=apps&hl=en|accessdate=11 February 2014}}</ref>  Windows Phone,<ref>{{cite web|title=Pocket Brewer Windows Phone BeerXML|url=http://www.pocketbrewer.com/how-to-use-recipe-import-export-features/|publisher=The Pocket Brewer|accessdate=14 February 2014}}</ref>  and iOS apps.<ref>{{cite web|last=Parker|first=David|title=A recipe formulation App for iOS|url=http://www.djpsoftware.com/brewpal/|publisher=DJP Software|accessdate=15 February 2014}}</ref><ref>{{cite web|last=Griffith|first=William|title=HomeBrew Assistant|url=http://www.homebrewassistant.com/|work=homebrewassistant.com|publisher=iTunes Store|accessdate=15 February 2014}}{{Dead link|date=September 2025 |bot=InternetArchiveBot }}</ref>

Plugins and extensions supporting BeerXML have been written for a variety of platforms including [Ruby](/source/Ruby_(programming_language)) via [RubyGems](/source/RubyGems),<ref>{{cite web|last=Palmer|first=Brian|title=BeerXML At RubyGems|url=https://rubygems.org/gems/beerxml|publisher=Ruby Gems|accessdate=15 February 2014}}</ref> [WordPress](/source/WordPress),<ref>{{cite web|last=Springer|first=Derek|title=BeerXML Shortcode For WordPress|url=http://wordpress.org/plugins/beerxml-shortcode/|work=WordPress.org|publisher=WordPress|accessdate=15 February 2014}}</ref> [PHP](/source/PHP)<ref>{{cite web|last=Hotelling|first=George|title=A PHP BeerXML parser and generator|url=https://github.com/georgeh/php-beerxml|publisher=GitHub|accessdate=15 February 2014}}</ref> and [JavaScript](/source/JavaScript)<ref>{{cite web|last=Taylor|first=Daniel G.|title=A BeerXML import and export plugin for Brauhaus.js|url=https://github.com/homebrewing/brauhaus-beerxml|publisher=GitHub|accessdate=15 February 2014}}</ref>

Many brewing hardware manufacturers incorporate BeerXML into their systems<ref>{{cite web|last=Ingraham|first=Nathan|title=The PicoBrew Zymatic is the Nespresso of beer brewing|url=https://www.theverge.com/2013/10/2/4795602/picobrew-zymatic-is-the-nespresso-of-beer-brewing|work=Vox Media|date=2 October 2013 |publisher=The Verge|accessdate=15 February 2014}}</ref><ref>{{cite web|last=Tyson|first=Mark|title=Ex-Microsoft execs launch beer making device on Kickstarter|url=http://hexus.net/ce/news/gadgets/60737-ex-microsoft-execs-launch-beer-making-device-kickstarter/|work=Hexus|date=October 2013 |publisher=HEXUS.net is the UK’s number one independent technology news and reviews website|accessdate=15 February 2014}}</ref><ref>{{cite web|last=Casey|first=Johnston|title=A computerized beer machine takes the legwork out of home-brewing|url=https://arstechnica.com/gadgets/2013/10/a-computerized-beer-machine-takes-the-legwork-out-of-home-brewing/|work=arstechnica.com |date=October 2013 |publisher=arstechnica.com/gadgets/2013/10/a-computerized-beer-machine-takes-the-legwork-out-of-home-brewing/|accessdate=14 February 2014}}</ref> and third party plugins and patches are being developed for brewery control hardware and embedded systems<ref>{{cite web|title=BeerXML2BrewTroller beta - Download BeerXML onto your BrewTroller|date=30 May 2013 |url=https://sourceforge.net/projects/beerxml2bt/|publisher=SourceForge.net|accessdate=15 February 2014}}</ref> allowing the automation and fine control and timing of processes such as [mashing](/source/mashing)<ref>{{cite web|last=Wolf|first=Michael|title=Here's The Little Box That Could Change The Beer World Forever|url=https://medium.com/on-startups/888fe67a57b7|work=medium.com|accessdate=15 February 2014}}</ref>  and potentially [fermentation](/source/fermentation).

==Common applications and examples of usage==

BeerXML is used in both amateur<ref>{{cite web|title=Brew Competition BeerXML advice page|url=http://help.brewcompetition.com/files/beerxml_import.html|accessdate=11 February 2014}}</ref> and professional<ref>{{cite web|title=3BBL Micro Brewery|url=http://www.bru-gear.com/store/p3/3BBL_Micro_Brewery.html|work=Bru-Gear.com|publisher=BruGear LLC|accessdate=15 February 2014|archive-url=https://web.archive.org/web/20140222180227/http://www.bru-gear.com/store/p3/3BBL_Micro_Brewery.html|archive-date=22 February 2014|url-status=dead}}</ref>  brewing and facilitates the sharing of brewing data over the [internet](/source/internet).<ref>{{cite web|title=Brew Monkey BeerXML page|url=http://www.brew-monkey.com/recipes/whatisbeerxml.php|publisher=brew-monkey.com}}</ref> Users of different applications such as the [open-source software](/source/open-source_software)<ref>{{cite web|title=Brewtarget|url=https://gitorious.org/brewtarget|work=gitorious.org|publisher=Gitorious|accessdate=15 February 2014|archive-url=https://web.archive.org/web/20140221175816/https://gitorious.org/brewtarget|archive-date=21 February 2014|url-status=dead}}</ref>  Brewtarget (with more than 52,000 downloads <ref>{{cite web|title=Linux.com article on Brewtarget|url=http://www.linux.com/learn/tutorials/553639-brewtarget-hop-into-beer-brewing-with-open-source|publisher=Linux.com|accessdate=14 February 2014}}</ref> ) can share data via XML with users of popular proprietary software such as Beersmith and ORRTIZ: BMS 4 Breweries or upload their data to share on BeerXML compatible sharing sites and cloud platforms such as Brewtoad (over 50,000 registered users<ref>{{cite web|title=Brewtoad User Stats|url=http://www.brewtoad.com/users|publisher=Brewtoad.com|access-date=2014-02-14|archive-url=https://web.archive.org/web/20140209055449/http://brewtoad.com/users|archive-date=2014-02-09|url-status=dead}}</ref> ) or the Beersmith Recipe Cloud (with 43,000 registered users). A user of a recipe design and sharing and creation site such as Brewersfriend.com can import and export<ref>{{cite web|title=Brewer's Friend FAQ|url=http://www.brewersfriend.com/faq/#platform5|publisher=Brewersfriend.com}}</ref> BeerXML to and from mobile apps or enter it into a brewing competition database<ref>{{cite web|title=BrewCompetition.com BeerXML guidelines|url=http://help.brewcompetition.com/files/beerxml_import.html|publisher=The Brew Competition Online Entry & Management (BCOE&M) system}}</ref> such as The Brew Competition Online Entry & Management (BCOE&M) system.

The adoption of BeerXML as a standard is leading to new developments such as ingredients databases<ref>{{cite web|title=The Beer Database Project|url=http://beerdb.org/|publisher=BeerDB.org}}</ref> which attempt to standardise ingredients definitions and characteristics. Brewers can use platforms like Brewblogger.com to create recipes and log their brewday for publication as a [blog](/source/blog) and for export to databases<ref>{{cite web|title=Brewthology database system|url=http://twinhillsbrewery.com/brewthology/|publisher=The Twin Hills Brewery|accessdate=14 February 2014|archive-url=https://web.archive.org/web/20140222060422/http://twinhillsbrewery.com/brewthology/|archive-date=22 February 2014|url-status=dead}}</ref><ref>{{cite web|last=Peretto|first=Bryan|title=PHP based BeerXML brewing recipe database|date=6 January 2014 |url=https://sourceforge.net/projects/brewthology/|publisher=SourceForge|accessdate=15 February 2014}}</ref>   and common [spreadsheet](/source/spreadsheet) applications.<ref>{{cite web|title=Brewblogger feature set|url=http://www.brewblogger.net/index.php?page=features|publisher=Brew Blogger Platform}}</ref>

JavaScript applications such as brauhaus.js (developed from the Malt.io recipe sharing site<ref>{{cite web|last=Taylor|first=Daniel G|title=New release of brauhaus.js|url=http://blog.malt.io/2013/05/brauhausjs-mashing.html|publisher=Malt.io|accessdate=15 February 2014|archive-url=https://web.archive.org/web/20140222232424/http://blog.malt.io/2013/05/brauhausjs-mashing.html|archive-date=22 February 2014|url-status=dead}}</ref> ) allow users to run them on a local machine or web browser for execution through any standards compliant web browser.

==Supported fields==

The following [fields](/source/Field_(computer_science)) form the core information of the BeerXML structure

* Recipes

    Recipe name
    Brewer
    [Brewing method](/source/Mash_ingredients) (All grain, Partial Mash, [Extract](/source/Malt_extract) )
    Recipe Type ([Ale](/source/Ale), [Lager](/source/Lager), Hybrid, etc.)
    Recipe volume (Run length)
    Boil volume ([Wort](/source/Wort) size)
    Boil time (duration)
    Recipe efficiency
    Estimated values
        OG ([Original gravity](/source/Original_gravity))
        FG ([Final gravity](/source/Final_gravity))
        [Color](/source/Beer_measurement) (SRM)
        Bitterness ([IBU](/source/International_Bitterness_Units_scale))
        [Alcohol content](/source/Original_Gravity) (%abv)

* Hops

    Name
    Origin
    Description
    [Alpha acid](/source/Alpha_acid)s
    Beta acids
    Storageability (HSI)
    [Humulene](/source/Humulene)
    [Caryophyllene](/source/Caryophyllene)
    [Cohumulone](/source/Alpha_acid)
    [Myrcene](/source/Myrcene)
    Farsene (not explicitly included in BeerXML v1)
    Total oil (not explicitly included in BeerXML v1)

Recipe-specific - when added (Boil, Mash, First Wort, Dry, etc.)
    
    Amount
    Time (duration)

* Fermentables

    Name
    Origin
    Description
    Type (Grain, Sugar, etc.)
    Potential
    Recommend Mash (true or false)
    IBU gal/lb (for hopped extract)
    Color (°[Lovibond](/source/Degrees_Lovibond))
    Moisture content
    [Protein](/source/Protein) content
    [Diastatic power](/source/Diastatic_power) ([°Lintner](/source/%C2%B0Lintner))
    Maximum used (% of [grist](/source/grist))

Recipe-specific

    Amount
    Late Addition (true or false)

* Additives (called MISC for miscellaneous in BeerXML v1)

    Name
    Description
    Type ([Fining](/source/Finings), Spice, Herb, etc.)

Recipe-specific - when added (Boil, Primary, etc.)
    
    Amount
    Time (duration)

[Yeasts](/source/Yeasts)

    Name
    Supplier
    Catalog number
    Description
    Type (Ale, Lager, etc.)
    Form (Dry, Liquid, etc.)
    Best for
    Temperature range
    [Flocculation](/source/Flocculation)
    [Attenuation](/source/Attenuation_(brewing))
    Max reuse

Recipe-specific

    Amount
    Added to secondary (true or false)
    Time [cultured](/source/Cell_culture)

==Limitations==

BeerXML 1.0 supports no more than three fermentation steps.<ref>{{cite web|title=Did you know you can import and export recipes via BeerXML?|url=http://feedback.ibrewmaster.com/knowledgebase/articles/44652-did-you-know-you-can-import-and-export-recipes-via|work=ibrewmaster.com|publisher=iBrewmaster|accessdate=15 February 2014|archive-url=https://web.archive.org/web/20140221185154/http://feedback.ibrewmaster.com/knowledgebase/articles/44652-did-you-know-you-can-import-and-export-recipes-via|archive-date=21 February 2014|url-status=dead}}</ref>  While this is not a real world limitation for many brewers, it does introduce a discrepancy where a software tool or web service that allows several or unlimited fermentation steps wishes to implement BeerXML as an import/export mechanism. For example; where a fermentation schedule instruction to pitch at 21 degrees [Celsius](/source/Celsius), allow to drop to 17 over three days and then decrease by 1 degree per day until the wort reaches 10 degrees, hold for 12 days before racking for maturation. This could not be accommodated within the formal structure requiring the use of informal/optional and non machine readable fields.

All units are converted to [SI units](/source/International_System_of_Units) internally. As a result, there is loss of precision when converting non SI units whether they be Imperial, US Customary or metric.{{clarify|Does it explicitly limit decimal places, or is the loss of precision not actually due to the format?|date=December 2023}}

Hop oil contributions in the copper are not explicitly supported in the current definition.

Farsene levels are not explicitly supported in the current definition.

No distinction is made between [weight](/source/weight) and [mass](/source/mass)<ref>{{cite web|title=Supported Units - Brewtarget 2.02 User Manual|url=http://www.brewtarget.org/manual.html#supportunits|publisher=Brewtarget|accessdate=15 February 2014}}</ref>

==Development==

The BeerXML standard has a proposed second version which has been mooted and is under development. It has not been validated or published as its feature set is still under discussion.<ref>{{cite web|title=BeerXML 2 Schema Proposal|url=http://beerxml.com/forum/index.php?topic=10.0|work=BeerXML Development Forum|publisher=BeerXML.com|accessdate=14 February 2014|archive-date=22 February 2014|archive-url=https://web.archive.org/web/20140222191510/http://beerxml.com/forum/index.php?topic=10.0|url-status=dead}}</ref>

==XML header==

As in XML, all files begin with a header line as the first line.  After the XML header a record set should start (for example<code><RECIPES>…</RECIPES></code> or <code><HOPS> … </HOPS></code>).

Required XML Header Example with Recipes [tag](/source/Tag_(metadata)):

<syntaxhighlight lang="xml"><?xml version="1.0" encoding="UTF-8"?>
<RECIPES>
  …
</RECIPES></syntaxhighlight>

==Tag names==

Tag names are always [uppercase](/source/Letter_case).  For example, "HOP" is acceptable, but "hop" and "Hop" are not.

==Version==

All [records](/source/Record_(computer_science)) have a required <VERSION> tag that denotes the [version](/source/Software_versioning) of the XML standard.  At present, all are set to the [integer](/source/integer) 1 for this version of the standard.  It is intended that future versions of the standard will be backward compatible with older versions, but the VERSION tag allows newer programmes to check for a higher version of the standard or do conversions if required to be backward compatible.

==Data formats==

* Record Set – A special tag that starts a particular set of data.  For example, an XML table that consists of a set of hops records might start with a <HOPS> tag to denote that this is the start of hops records.  After the last record, a </HOPS> tag would be used.
* Record - Denotes a tag that starts or ends a particular record—for example "HOP" might start a hops record or "FERMENTABLE" might start a fermentable record.
* Percentage - Denotes a [percentage](/source/percentage) - all percentages are expressed as percent out of 100- for example 10.4% is written as "10.4" and not "0.104"
* List - The data has only a fixed number of values that are selected from the list in the description table for the tag.  These items are [case sensitive](/source/Case_sensitivity), and no other values are allowed.
* Text - The data is free format text.  For multiline entries, [line breaks](/source/Newline) will be preserved where possible and the text may be [truncated](/source/Data_truncation) on import if the text is too long for the importing program to store.  Multiline entries may be split with either a [newline](/source/newline) or a [carriage return](/source/carriage_return)/newline combination. Importing programmes should accept either.
* Boolean - The [Boolean data type](/source/Boolean_data_type) may be either TRUE or FALSE, with TRUE and FALSE in capitals.  A default value should be specified for optional fields - the default is used if the value is not present.
* Integer - An integer number with no [decimal point](/source/Decimal_mark).  May include negative values - examples include ...-3, -2, -1, 0, 1, 2, 3,...
* Floating Point - A [floating point](/source/floating_point) number, usually expressed in its simplest form with a decimal point as in "1.2", "0.004", etc...  Programmes should endeavor to store as many significant digits as possible to avoid truncating or losing small values.

==Units==

All units are fixed.  It is the responsibility of the importing or exporting programme to convert to and from the units below if needed.

; Weight Units: All [weight](/source/weight)s are measured in [Kilogram](/source/Kilogram)s (kg).  For small values the exporting programme will make an effort to preserve as many significant [digits](/source/Numerical_digit) as possible.

; Volume Units: All volumes are measured in [Litre](/source/Litre)s (l).  For small values the exporting programme will make an effort to preserve as many significant digits as possible.

; Temperature Units: All [temperature](/source/temperature)s are measured in degrees [Celsius](/source/Celsius).

; Time Units: All times are given in [minute](/source/minute)s or [fractions](/source/fractions) thereof – unless otherwise specified in the tag description.

; Specific Gravity Units: [Specific gravity](/source/Specific_gravity) are measured relative to the weight of the same size sample of [water](/source/water). For example, “1.035”, “1.060”, and so on.

; Pressure Units: Pressures are measured in [kilopascals](/source/Pascal_(unit)) (kPa)

==Non-standard tags==

As per the XML standard, all non-standard tags should be ignored by the importing program. This allows an implementation to store additional information if desired by using their own tags. Any tags not defined as part of this standard may safely be ignored by the importing program.

==Optional tags==

The optional 'Appendix A' adds tags for use in the display of brewing data using XML [style sheets](/source/Style_sheet_(web_development)) or XML compatible [report generators](/source/Report_Generator).  As the tags in the appendix are for display only and may include rounded [values](/source/values) and varying units.  These appendix tags are intended for display and not for data import.

==See also==
{{Portal|Beer}}

* [Beer measurement](/source/Beer_measurement) 
* [Brewing](/source/Brewing)
* [Gravity (alcoholic beverage)](/source/Gravity_(alcoholic_beverage))
* [Homebrewing](/source/Homebrewing) 
* [Hops](/source/Hops)
* [Mash ingredients](/source/Mash_ingredients) 
 
==References==
{{Reflist|30em}}

==External links==
{{Wikibooks|Subject:XML}}
{{Wikibooks|Subject:Brewing}}
* [http://www.beerxml.com/ BeerXML Homepage]
* [http://www.beerxml.com/beerxml.htm BeerXML 1.0 Specification]
* [https://georgeh.github.io/php-beerxml A PHP BeerXML parser and generator]
* [https://wordpress.org/plugins/beerxml-shortcode WordPress BeerXML plugin]
* [https://rubygems.org/gems/beerxml Ruby library for parsing and generating beerxml]
* [https://www.fivebladesbrewing.com/beerxml-plugin-wordpress/ BeerXML shortcode Wordpress plugin by FiveBlades]
{{Alcoholic beverages}}

Brewing
Category:Fermentation in food processing
Category:XML-based standards
Category:WordPress

---
Adapted from the Wikipedia article [BeerXML](https://en.wikipedia.org/wiki/BeerXML) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/BeerXML?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
