From Wikipedia, the free encyclopedia
Wurfl logo main 114px.png

WURFL (Wireless Universal Resource FiLe) is a set of proprietary application programming interfaces (APIs) and an XML configuration file which contains information about device capabilities and features for a variety of mobile devices, focused on mobile device detection.[1][2] Until version 2.2, WURFL was released under an "open source / public domain" license.[3] Prior to version 2.2, device information was contributed by developers around the world and the WURFL was updated frequently, reflecting new wireless devices coming on the market. In June 2011, the founder of the WURFL project, Luca Passani, and Steve Kamerman, the author of Tera-WURFL, a popular PHP WURFL API, formed ScientiaMobile, Inc to provide commercial mobile device detection support and services using WURFL.[4] As of August 30, 2011, the ScientiaMobile WURFL APIs are licensed under a dual-license model, using the AGPL license for non-commercial use and a proprietary commercial license. The current version of the WURFL database itself is no longer open source.

Solution approaches[edit]

There have been several approaches to this problem, including developing very primitive content and hoping it works on a variety of devices, limiting support to a small subset of devices or bypassing the browser solution altogether and developing a Java ME or BREW client application.

WURFL solves this by allowing development of content pages using abstractions of page elements (buttons, links and textboxes for example). At run time, these are converted to the appropriate, specific markup types for each device. In addition, the developer can specify other content decisions be made at runtime based on device specific capabilities and features (which are all in the WURFL).

WURFL Cloud[edit]

In March 2012, ScientiaMobile has announced the launch of the WURFL Cloud.[5] While the WURFL Cloud is a paid service, a free offer is made available to hobbyists and micro-companies for use on mobile sites with limited traffic.[6] Currently, the WURFL Cloud supports Java, Microsoft .NET, PHP, Ruby, Python, Node.js and the Perl programming languages [7][8]

WURFL and Apache, NGINX, Varnish Cache, and HAProxy[edit]

In October 2012, ScientiaMobile has announced the availability of a C++ API, an Apache module, an NGINX module and Varnish Cache module.[9] Later in November 2016, ScientiaMobile provided a module for the HAProxy load balancer.[10] Differently from other WURFL APIs, the C++ API and the modules are distributed commercially exclusively. Several popular Linux distribution are supported through RPM and DEB packages.[11]


In 2014, WURFL.io was launched. WURFL.io features non-commercial products and services from ScientiaMobile:

  • WURFL.js: a JavaScript device detection service that makes Server-Side detected properties (WURFL capabilities) available to the JavaScript in web pages.[12]
  • ImageEngine: a WURFL-based Image CDN for optimizing image delivery on the web. [13]
  • The MOVR (Mobile OverView Report) providing the latest in mobile and web statistics.

WALL, Wireless Abstraction Library[edit]

WALL (Wireless Abstraction Library by Luca Passani) is a JSP tag library that lets a developer author mobile pages similar to plain HTML, while delivering WML, C-HTML and XHTML Mobile Profile to the device from which the HTTP request originates, depending on the actual capabilities of the device itself.[14] Device capabilities are queried dynamically using the WURFL API. A WALL port to PHP (called WALL4PHP) is also available.

Supported implementations[edit]

WURFL is currently supported using the following.

  • Java (via WALL)
  • PHP (via Tera-WURFL (database driven), the new WURFL PHP API and WALL4PHP)
  • .NET Framework (via Visual Basic / C# / any .NET language API and Somms.NWURFL(C#))
  • Perl
  • Ruby
  • Python (via Python Tools)
  • XSLT
  • C++
  • Apache Mobile Filter

The PHP/MySQL based Tera-WURFL API comes with a remote webservice that allows you to query the WURFL from any language that supports XML webservices[15] and includes clients for the following languages out of the box:

  • PHP
  • Perl
  • Python
  • JavaScript
  • ActionScript 3 (Flash / Flex / AIR / ECMAScript)

License update[edit]

The August 29, 2011 update of WURFL included a new set of licensing terms. These terms set forth a number of licenses under which WURFL could be used. The free version of the license does not allow derivative works, and prevents direct access to the wurfl.xml file. As a result of the "no-derivates" clause, users are no longer permitted to add new device capabilities to the WURFL file either directly or through the submissions of "patches". A commercial license is required to utilize third-party API's with the WURFL Repository.

On January 3, 2012, ScientiaMobile filed a DMCA takedown notice against the open-source device database OpenDDR that contains data from a previous version of WURFL. According to OpenDDR, these data were available under GPL.[16]

On March 22, 2012 it was announced by Matthew Weier O'Phinney that Zend Framework would be dropping support for WURFL as of version 1.12.[17] This was due to the licence change which makes it incompatible with the Zend Framework's licensing[18] as the new licensing now requires that you "open-source the full source code of your web site, irrespective of the fact that you may modify the WURFL API or not."[19]

See also[edit]


  1. ^ Hatem (February 11, 2007). "WURFL, Wireless Universal Resource File". phpmagazine.net. Retrieved December 29, 2011. WURFL is an open source project which aims to collect information regarding wireless devices' configurations, capabilities and features. [...] The file is XML formatted [...]
  2. ^ Wong, Richard (March 4, 2010). "In Mobile, Fragmentation is Forever. Deal With It". TechCrunch. Retrieved December 29, 2011. WURFL— wireless universal resource file—an open source project; a "config file that contains all info on every wireless device on earth"
  3. ^ "New WURFL Snapshot available, BUT WITH IMPORTANT CHANGE". 30 August 2011. Retrieved 7 September 2013.
  4. ^ Krishna Guda, CEO, ScientiaMobile, Inc "WURFL Team Launches ScientiaMobile", June 6, 2011, accessed June 27, 2011.
  5. ^ Passani, Luca (March 13, 2012). "Hear! Hear! the WURFL Cloud is finally here!". ScientiaMobile. Retrieved March 25, 2012. Many have asked about the availability of a WURFL Cloud over the years. The advent of ScientiaMobile has made this possible.
  6. ^ ScientiaMobile, Inc. (March 19, 2012). "ScientiaMobile Launches WURFL Mobile Device Detection in the Cloud". PRWeb. Retrieved March 25, 2012. ScientiaMobile has always paid particular attention to the community of developers. The fact that we support a free option for certain classes of users is the proof of this. At the same time, our expertize in the enterprise world has enabled us to provide a solution that 'cuts it' for large companies too.
  7. ^ ScientiaMobile, Inc. (October 17, 2012). "ScientiaMobile Launches Perl Client for the WURFL Cloud". PRWeb.
  8. ^ "WURFL Cloud Getting Started". ScientiaMobile,Inc.
  9. ^ Passani, Luca (October 2, 2012). "HTTP and Mobile: The Missing Header". ScientiaMobile. Retrieved October 20, 2012. Enriching the HTTP request or the Environment Variables with new headers and values are obvious use cases. This allows organizations to "inject" the value of WURFL without disrupting (or even without redeploying) existing sites and systems.
  10. ^ "Enable Scientamobile WURFL device detection module". November 4, 2016. Retrieved November 29, 2021.
  11. ^ ScientiaMobile, Inc (October 2, 2012). "ScientiaMobile FAQ: C++ NGINX Varnish Apache". ScientiaMobile. Retrieved October 20, 2012. Differently from the Java, .NET, PHP and DB APIs, the C++ API and Modules are not released under a dual license, but exclusively under a commercial license. Interested parties can inquire about licensing the usual way.
  12. ^ "Server Side Detection with JavaScript". smashingmagazine.com. July 2014.
  13. ^ "ImageEngine, the Fast Image CDN". ImageEngine.io. ScientiaMobile.{{cite web}}: CS1 maint: url-status (link)
  14. ^ "WURFL and WALL". palowireless.com. Retrieved December 29, 2011. The Wireless Abstraction Library (called WALL) is a Java tag-library that gives you a universal mark-up for wireless devices.
  15. ^ Remote Webservice. Tera-WURFL. Retrieved on 2014-05-23.
  16. ^ Terence Eden: WURFL and database copyright, 2012-01-06
  17. ^ ...due to a change in licensing by the WURFL project -- the free version is now AGPL -- we're dropping the WURFL adapter from Zend_Http_UserAgent...
  18. ^ Zend Framework. Framework.zend.com. Retrieved on 2014-05-23.
  19. ^ The AGPL license demands that you open-source the full source code of your web site, irrespective of the fact that you may modify the WURFL API or not.

External links[edit]