Amazon Silk
Developer Guide
« PreviousNext »
View the PDF for this guide.Go to the Kindle Store to download this guide in Kindle format.Did this page help you?  Yes | No |  Tell us about it...

Amazon Silk User Agent

Amazon Silk is expanding to new devices, and in the process we're making a few changes to our user agent. The Silk user agent strings will follow the syntax below on all devices:

Desktop/Tablet

Mozilla/5.0 (Linux; U; Android android-version; locale; product-model Build/product-build)
    AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Safari/webkit-version

Mobile

Mozilla/5.0 (Linux; U; Android android-version; locale; product-model Build/product-build) 
    AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version like Chrome/chrome-version Mobile Safari/webkit-version

If you want to detect the Silk user agent, here are a few items to note:

  • Going forward, the Amazon Silk user agent string will follow the same syntax on all devices. If the user agent has Silk in it, and it's not PlayStation Vita, it's Amazon Silk. (The PS Vita identifies itself as Silk. You can exclude the PS Vita with !/Playstation/.test(navigator.userAgent).)

  • If you detect the Silk browser, and Mobile is not in the user agent string, you should deliver a tablet experience. If Mobile is in the user agent, you should deliver a smartphone experience.

  • As shown in the templates above, the Silk-Accelerated string will be removed from the user agent on all devices. Therefore, don't base any detection scripts on this value.

For examples of detecting the Silk user agent, see User Agent Detection. These examples will detect Silk on any device.

User Agent Overview

In the User-Agent request header field, Silk sends either a desktop or a mobile user agent string. The desktop user agent indicates that the browser is requesting the standard desktop version of the page. The mobile user agent requests a mobile view of the page.

Note

The only difference between the two user agents is the presence of the string Mobile in the mobile user agent.

The specific user agent sent depends on the view requested, but by default Silk requests the desktop view. Thus, most requests from Silk will include the desktop user agent string.

At the Menu, the user can request a particular view for a domain.

A dialog presents three view options: Automatic, Desktop, and Mobile.

If the user selects Desktop or Mobile, Silk sends the corresponding user agent string in the HTTP request. If the user selects Automatic (the default setting), Silk automatically determines which user agent string to send. Silk requests the desktop view except in cases where a mobile view provides a better user experience.

User Agent Templates

The general templates for the Silk user agent on the Kindle Fire, Kindle Fire HD, and Kindle Fire HDX are shown below. Note that the Kindle Fire 1st Generation user agent (shown in User Agent Examples) follows a slightly different syntax.

Desktop/Tablet

Mozilla/5.0 (Linux; U; localeproduct-model Build/product-build)
    AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version Safari/webkit-version
    Silk-Accelerated=cloud-browsing-state

Mobile

Mozilla/5.0 (Linux; U; Android android-versionlocaleproduct-model Build/product-build)
    AppleWebKit/webkit-version (KHTML, like Gecko) Silk/browser-version Mobile Safari/webkit-version 
    Silk-Accelerated=cloud-browsing-state

Note

Red fields are variable and are described below.

Template fields

  • locale–Indicates the chosen language and country or region for the tablet. Locale is in hyphenated lowercase format, as in en-us (US English). For Kindle Fire (1st Generation), locale is always en-us.

  • product-model–The value of Build.MODEL (for example, KFTT).

  • android-version–The Android platform version (for example, 4.0.3).

  • product-build–The value of Build.ID (for example, IML74K).

  • webkit-version–Indicates the version of WebKit used (for example, 535.19). This value can change whenever the Kindle Fire receives a software update.

  • browser-version–Indicates the version of the Silk browser, in the format major.minor (for example, 2.1). The browser version can change whenever the Kindle Fire receives a software update.

  • cloud-browsing-state–This value is set to true if cloud browsing is enabled, and false if cloud browsing is not enabled. Users can change this setting on the device. When cloud browsing is not enabled, the request is sent directly to origin. When cloud browsing is enabled, the request may be sent either through the cloud or directly to origin, depending upon various factors. In other words, a value of Silk-Accelerated=true does not necessarily mean that a request was sent through the cloud.

Related product models

  • Kindle FireKFOT

  • Kindle Fire HDKFTT

  • Kindle Fire HD 8.9"KFJWI

  • Kindle Fire HD 8.9" 4GKFJWA

  • Kindle Fire HD 7" (3rd Generation)KFSOWI

  • Kindle Fire HDX 7" (3rd Generation)KFTHWI

  • Kindle Fire HDX 7" (3rd Generation) 4GKFTHWA

  • Kindle Fire HDX 8.9" (3rd Generation)KFAPWI

  • Kindle Fire HDX 8.9" (3rd Generation) 4GKFAPWA

Mapping the User Agent to the Build Version

In addition to the browser version included in the user agent string, each version of Amazon Silk includes a build version.

You can view the Silk build version on a Kindle Fire device. To do so, enter about:version in the address bar. Silk will display the build version string.

In some troubleshooting scenarios, you may need to know both the browser and build versions for a given Silk client. The following table maps the current Silk browser version to build versions. For each browser version there can be several build versions, each of which corresponds to a generation of Kindle Fire devices. To learn more about Kindle Fire device types, see the Kindle Support device list.

Note

The version of Silk running on 1st Gen devices is identified only by build version, and not by a browser version.

Silk Browser VersionSilk Build Version
 1st Gen—Kindle Fire2nd Gen—Kindle Fire HD 8.9"; Kindle Fire HD 7"; Kindle Fire (2nd Gen)3rd Gen—Kindle Fire HDX 8.9"; Kindle Fire HDX 7"; Kindle Fire HD 7" (3rd Gen)
n/a1.0.143.1n/an/a
3.19n/a1.0.228.111.0.520.40

Note

Last updated: June 18, 2014

User Agent Examples

Below are some example user agent strings for different versions of Kindle Fire.

Silk UA for the Current Kindle Fire and Kindle Fire HD

Desktop/Tablet

Mozilla/5.0 (Linux; U; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Safari/535.19 Silk-Accelerated=true

Mobile

Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true

Silk UA for Kindle Fire 1st Generation

In the examples below, red fields are variable. As mentioned earlier, the numeric value will increment with software updates, while the Silk-Accelerated value can be either true or false, depending upon customer selection.

Desktop/Tablet

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.13.81_10003810) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true

Mobile

Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Silk/1.0.13.81_10003810) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=true

User Agent Detection

You can use JavaScript to detect the Silk user agent across various Kindle Fire device families. Unless you want to provide a unique experience for different Kindle Fire devices, we recommend a general match that will work over time as product models and version numbers change. The following examples illustrate best practices for matching the Silk user agent across Kindle Fire device types.

Note:

  • The tests below also match the user agent string for the PlayStation Vita browser. If this is a concern, you can exclude that browser using the following condition:

    !/Playstation/.test(navigator.userAgent)

To detect Silk

   
    if (/\bSilk\b/.test(navigator.userAgent)) {
        alert("Silk detected!");
    }

        

To detect the Silk version

   
    var match = /\bSilk\/([0-9._-]+)\b/.exec(navigator.userAgent);
    if (match) { 
        alert("Detected Silk version "+match[1]);
    }

        

To detect mobile/desktop preference


    var match = /\bSilk\/(.*\bMobile Safari\b)?/.exec(navigator.userAgent);
    if (match) {
        alert("Detected Silk in mode "+(match[1] ? "Mobile" : "Default (desktop)"));
    }

        

To detect multiple variables at once


    var match = /(?:; ([^;)]+) Build\/.*)?\bSilk\/([0-9._-]+)\b(.*\bMobile Safari\b)?/.exec(navigator.userAgent);
    if (match) {
        alert("Detected Silk version "+match[2]+" on device "+(match[1] || "Kindle Fire")+" in mode "+(match[3] ? "Mobile" : "Default (desktop)"));
    }

        

User Agent Spoofing

User agent spoofing makes it possible to include the Silk user agent string in requests sent from some other client. A website then returns resources as though the request came from the Silk browser. This can be useful for testing and troubleshooting. However, keep in mind that a site may use feature detection that responds differently on different devices or platforms. For example, in response to the HTML5 video canPlayType() method, the behavior of a desktop computer spoofing Silk will differ from that of a Kindle Fire actually running Silk.

There are various tools and techniques available for user agent spoofing. The sections below describe several methods for spoofing Silk.

To Spoof the Silk User Agent without Installing a Plugin

The following instructions apply to Google Chrome, Internet Explorer, and Mozilla Firefox.

  1. Follow the How-To Geek instructions for changing your user agent; use one of the user agents listed in User Agent Examples.

  2. Navigate to http://whatsmyuseragent.com/ and verify that your spoofed user agent is detected.

  3. Navigate to the page on which you want to spoof the user agent.

To Spoof the Silk User Agent in Google Chrome

  1. Install the User-Agent Switcher for Chrome.

  2. Click the new Chrome UA Spoofer icon at the top-right of the Chrome browser.

  3. Click Settings and add one or more of the Silk user agents listed in User Agent Examples. You'll probably want to add these to a "Silk" group with the Indicator Flag "SLK".

  4. Open a new tab and click the Chrome UA Spoofer icon again. Select your new user agent from the appropriate group (presumably "Silk"). The indicator flag (presumably "SLK") that appears over the icon indicates that you're spoofing the Silk user agent.

  5. Navigate to the page on which you want to spoof the user agent.

To Spoof the Silk User Agent in Mozilla Firefox

  1. Install the User Agent Switcher and restart the browser.

  2. In the Firefox browser, go to Tools > Default User Agent > Edit User Agents... and create one or more of the Silk user agents listed at User Agent Examples. When you're finished creating user agents, click OK.

  3. Go to Tools > Default User Agent and select the user agent you want to spoof.

  4. Navigate to http://whatsmyuseragent.com/ and verify that your spoofed user agent is detected.

  5. Navigate to the page on which you want to spoof the user agent.