OS Maps anytime, anywhere.

Get unlimited mapping on any device making it easy for you to explore the great outdoors. Find curated premium trails for walks, cycling and more.

Vertical image

You’re never far from a good route.

Discover hundreds of thousands ready-made routes at your fingertips. Simply open the OS Maps app and instantly start finding local routes nearby. You can also create and plot your own routes so you can explore the way you want to. Download maps and routes to your phone so you can use them wherever you go, even if you have no phone signal in an area.

An error occurred while processing the template.
The following has evaluated to null or missing:
==> ip_language  [in template "20097#20123#38001" at line 27, column 10]

Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??

FTL stack trace ("~" means nesting-related):
	- Failed at: #if ip_language == "en_AU"  [in template "20097#20123#38001" at line 27, column 5]
1<#assign b2cLoginService = serviceLocator.findService("uk.co.ordnancesurvey.cms.b2c.service.IB2CLoginService")!null 
2b2cUser = getterUtil.getString(b2cLoginService.getB2CLogin(request), "") 
3path = request.getAttribute("CURRENT_URL") 
4languageId = themeDisplay.getLanguageId() 
7isOrWasPremium = false 
8appleStore = "https://apps.apple.com/us/app/os-maps-walking-bike-trails/id978307846?itsct=apps_box&itscg=30200" 
9googleStore = "https://play.google.com/store/apps/details?id=uk.co.ordnancesurvey.osmaps" 
12<#if b2cUser?has_content> 
13    <#assign isOrWasPremium = b2cLoginService.isOrWasPremium(request) /> 
15<#if !entries?has_content> 
16    <#if themeDisplay.isSignedIn()> 
17        <div class="alert alert-info"> 
18            <@liferay.language key="there-are-no-menu-items-to-display" /> 
19        </div> 
20    </#if> 
22    <#assign 
23    subscriptionCardStructureKey = "OS_SUBSCRIPTION_CARD" 
24    jaClassName = "com.liferay.journal.model.JournalArticle" 
25    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
26    /> 
27    <#if ip_language=="en_AU"> 
28        <a id="os-subscriptions" class="os-target-anchor"/> 
29        <div class="os-center-wrapper section-title-container"> 
30            <h2 class="title dark text-center"> 
31                <@liferay.language key="uk.co.ordnancesurvey.cms.get.started"/> 
32            </h2> 
33        </div> 
34        <section class="simple-section os-subscriptions-custome"> 
35            <div class="container"> 
36                <div class="os-subscriptions-custome__wrapper"> 
37                    <#if isOrWasPremium> 
38                        <div class="row"> 
39                            <div class="col-12"> 
40                                <div class="os-sub-existing-user"> 
41                                    <div class="os-sub-existing-user__image"> 
42                                        <img src="/o/os-cms-theme/images/logo-icon.png?t=${os_timestamp}" 
43                                             alt="Get started"> 
44                                    </div> 
45                                    <div class="os-sub-existing-user__content"> 
46                                        <div class="os-sub-existing-user__desc"> 
47                                            <@liferay.language key="uk.co.ordnancesurvey.cms.had.trial.description"/> 
48                                        </div> 
49                                        <div class="os-sub-existing-user__badges"> 
50                                            <a href="${appleStore}" class="badge-btn badge-btn--aple" 
51                                               aria-label="<@liferay.language key="uk.co.ordnancesurvey.download.app.store"/>" 
53                                                <img src="/o/os-cms-theme/images/app-store.png?t=${os_timestamp}" 
54                                                     alt="Download on the App Store"> 
55                                            </a> 
56                                            <a href="${googleStore}" class="badge-btn badge-btn--google" 
57                                               aria-label="<@liferay.language key="uk.co.ordnancesurvey.download.google"/>" 
59                                                <img src="/o/os-cms-theme/images/google-play.png?t=${os_timestamp}" 
60                                                     alt="Get in Google Play"> 
61                                            </a> 
62                                        </div> 
63                                    </div> 
64                                </div> 
65                            </div> 
66                        </div> 
67                    <#else> 
68                        <div class="row"> 
69                            <div class="col-12"> 
70                                <div class="sub-cards-wrapper"> 
72                                    <div class="sub-card-container"> 
73                                        <div class="sub-card-container__image"> 
74                                            <img src="${themeDisplay.getPathThemeImages()}/logo-icon.png?t=${os_timestamp}" 
75                                                 alt="Get a 30 day free"> 
76                                        </div> 
77                                        <div class="sub-card-container__text"> 
78                                            <@liferay.language key="uk.co.ordnancesurvey.cms.get.thirty.day"/> 
80                                            <strong> 
81                                                <@liferay.language key="uk.co.ordnancesurvey.cms.free.trial"/> 
82                                            </strong> 
83                                            <@liferay.language key="uk.co.ordnancesurvey.cms.when.you.sign.up"/> 
84                                        </div> 
85                                        <a href="${product_link + au_trial_code}" data-senna-off="true" class="os-btn-primary sub-card-container__btn" 
86                                           arial-label="<@liferay.language key="uk.co.ordnancesurvey.cms.claim.free.trial"/>" 
88                                            <@liferay.language key="uk.co.ordnancesurvey.cms.claim.free.trial"/> 
89                                            <img src="${themeDisplay.getPathThemeImages()}/arrow-right.svg?t=${os_timestamp}" 
90                                                 alt="<@liferay.language key="uk.co.ordnancesurvey.cms.claim.free.trial"/>"> 
91                                        </a> 
92                                    </div> 
94                                    <div class="sub-card-container sub-card-container--second"> 
95                                        <div class="sub-card-container__text"> 
96                                            <@liferay.language key="uk.co.ordnancesurvey.cms.free.days.trial"/> 
97                                        </div> 
98                                        <div class="sub-card-container__badges"> 
99                                            <a href="${appleStore}" class="badge-btn badge-btn--aple" 
100                                               aria-label="<@liferay.language key="uk.co.ordnancesurvey.download.app.store"/>" 
102                                                <img src="${themeDisplay.getPathThemeImages()}/app-store.png?t=${os_timestamp}" 
103                                                     alt="Download on the App Store"> 
104                                            </a> 
105                                            <a href="${googleStore}" class="badge-btn badge-btn--google" 
106                                               aria-label="<@liferay.language key="uk.co.ordnancesurvey.download.google"/>" 
108                                                <img src="${themeDisplay.getPathThemeImages()}/google-play.png?t=${os_timestamp}" 
109                                                     alt="Get in Google Play"> 
110                                            </a> 
111                                        </div> 
112                                    </div> 
114                                </div> 
115                            </div> 
116                        </div> 
117                    </#if> 
118                    <div class="row desktop-only"> 
119                        <div class="col-12"> 
120                            <div class="os-qr-code-container"> 
121                                <div class="os-qr-code__text"> 
122                                    <@liferay.language key="uk.co.ordnancesurvey.cms.computer.qr.code.info"/> 
123                                </div> 
124                                <div class="os-qr-code__buttons"> 
125                                    <button class="os-btn-primary os-btn-primary--info" 
126                                            data-target="#osAppStoreModal" 
127                                            data-toggle="modal"> 
128                                        <@liferay.language key="uk.co.ordnancesurvey.cms.app.store.qr.code"/> 
129                                    </button> 
130                                    <button class="os-btn-primary os-btn-primary--success" 
131                                            data-target="#osGooglePlayStoreModal" 
132                                            data-toggle="modal"> 
133                                        <@liferay.language key="uk.co.ordnancesurvey.cms.play.store.qr.code"/> 
134                                    </button> 
135                                </div> 
136                            </div> 
137                        </div> 
138                    </div> 
139                </div> 
140            </div> 
141            <div aria-labelledby="osAppStoreModal" 
142                 class="fade modal" 
143                 id="osAppStoreModal" 
144                 role="dialog" 
145                 tabindex="-1" 
146                 aria-hidden="true" 
147                 style="display: none;"> 
148                <div class="modal-dialog modal-lg os-modal"> 
149                    <div class="modal-content"> 
150                        <div class="modal-header"> 
151                            <button class="close" 
152                                    aria-label="Close" 
153                                    data-dismiss="modal" 
154                                    role="button" 
155                                    type="button"> 
156                                <svg xmlns="http://www.w3.org/2000/svg" role="presentation" focusable="false" 
157                                     xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="34" height="34" 
158                                     viewBox="0 0 24 24"> 
159                                    <path fill="#4c4c4c" 
160                                          d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path> 
161                                </svg> 
162                            </button> 
163                        </div> 
164                        <div class="modal-body"> 
165                            <div class="modal-qr-code-wrapper"> 
166                                <img class="modal-qr-code" 
167                                     aria-label="app store qr code" 
168                                     src="${themeDisplay.getPathThemeImages()}/apps/qr-code-app-store.png"> 
169                            </div> 
170                            <h2 class="modal-qr-code-title"> 
171                                <@liferay.language key="uk.co.ordnancesurvey.cms.how.to.use.qr.code"/> 
172                            </h2> 
173                            <ol class="modal-qr-code-description"> 
174                                <li> 
175                                    <@liferay.language key="uk.co.ordnancesurvey.cms.how.qr.point.one"/> 
176                                </li> 
177                                <li> 
178                                    <@liferay.language key="uk.co.ordnancesurvey.cms.how.qr.point.two"/> 
179                                </li> 
180                                <li> 
181                                    <@liferay.language key="uk.co.ordnancesurvey.cms.how.qr.point.three"/> 
182                                </li> 
183                                <li> 
184                                    <@liferay.language key="uk.co.ordnancesurvey.cms.how.qr.point.four"/> 
185                                </li> 
186                            </ol> 
188                        </div> 
189                    </div> 
190                </div> 
191            </div> 
192            <div aria-labelledby="osGooglePlayStoreModal" 
193                 class="fade modal" 
194                 id="osGooglePlayStoreModal" 
195                 role="dialog" 
196                 tabindex="-1" 
197                 aria-hidden="true" 
198                 style="display: none;"> 
199                <div class="modal-dialog modal-lg os-modal"> 
200                    <div class="modal-content"> 
201                        <div class="modal-header"> 
202                            <button 
203                                    aria-label="Close" 
204                                    class="close" 
205                                    data-dismiss="modal" 
206                                    role="button" 
207                                    type="button"> 
208                                <svg xmlns="http://www.w3.org/2000/svg" role="presentation" focusable="false" 
209                                     xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="34" height="34" 
210                                     viewBox="0 0 24 24"> 
211                                    <path fill="#4c4c4c" 
212                                          d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path> 
213                                </svg> 
214                            </button> 
215                        </div> 
216                        <div class="modal-body"> 
217                            <div class="modal-qr-code-wrapper"> 
218                                <img class="modal-qr-code" 
219                                     aria-label="google play qr code" 
220                                     src="${themeDisplay.getPathThemeImages()}/apps/qr-code-google-play.png"> 
221                            </div> 
222                            <h2 class="modal-qr-code-title"> 
223                                <@liferay.language key="uk.co.ordnancesurvey.cms.how.to.use.qr.code"/> 
224                            </h2> 
225                            <ol class="modal-qr-code-description"> 
226                                <li> 
227                                    <@liferay.language key="uk.co.ordnancesurvey.cms.how.qr.point.one"/> 
228                                </li> 
229                                <li> 
230                                    <@liferay.language key="uk.co.ordnancesurvey.cms.how.qr.point.two"/> 
231                                </li> 
232                                <li> 
233                                    <@liferay.language key="uk.co.ordnancesurvey.cms.how.qr.point.three"/> 
234                                </li> 
235                                <li> 
236                                    <@liferay.language key="uk.co.ordnancesurvey.cms.how.qr.point.four"/> 
237                                </li> 
238                            </ol> 
240                        </div> 
241                    </div> 
242                </div> 
243            </div> 
244        </section> 
245    <#else> 
246        <#if !isOrWasPremium> 
247            <a id="os-subscriptions" class="os-target-anchor"/> 
248            <div class="os-center-wrapper section-title-container"> 
249                <h2 class="title dark text-center"> 
250                    <@liferay.language key="uk.co.ordnancesurvey.cms.choose.subscription"/> 
251                </h2> 
252            </div> 
253            <section class="simple-section sub-cards"> 
254                <div class="container"> 
255                    <div class="row"> 
256                        <div class="col-sm"> 
257                            <div class="cart-wrapper"> 
258                                <#list entries as cur_entry> 
260                                    <#assign assetRenderer = cur_entry.getAssetRenderer() 
261                                    className = assetRenderer.getClassName() 
262                                    /> 
264                                    <#if className == jaClassName && assetRenderer.getArticle().getDDMStructureKey() == subscriptionCardStructureKey> 
265                                        <#assign 
266                                        journalArticle = assetRenderer.getAssetObject() 
267                                        articleDisplay = journalArticleService.getArticleDisplay(journalArticle.getGroupId(), journalArticle.getArticleId(), 
268                                        journalArticle.getVersion(), subscriptionCardStructureKey, "view", ip_language, 1, null, themeDisplay) 
269                                        /> 
270                                        ${articleDisplay.getContent()} 
271                                    </#if> 
272                                </#list> 
273                            </div> 
274                        </div> 
275                    </div> 
276                </div> 
277            </section> 
278            <#if !b2cUser?has_content> 
279                <div class="os-center-wrapper account-url-container"> 
280                    <a href="${b2cLoginService.getLoginUrl(request)}" aria-label="<@liferay.language key="uk.co.ordnancesurvey.cms.create.free.account"/> external link" class="os-btn-link os-btn-link__primary"> 
281                        <@liferay.language key="uk.co.ordnancesurvey.cms.create.free.account"/> 
282                    </a> 
283                </div> 
284            </#if> 
285        </#if> 
287    </#if> 

Compare features

OS Standard Mapping
Plot, record and follow routes
Use web and mobile
OS Explorer and Landranger Mapping
Global Snap-to-path
National Parks Snap-to-path
View purchased maps offline
Import and export routes
Augmented Reality
Aerial 3D
Save maps offline
Print A4/A3 maps

Explore your horizons

For inspiration on the go, use OS Maps AR Viewer to pan across the landscape and discover the nearest forests, coastlines, hills, mountains and more.

Horizontal image

Works across all devices

Seamless sync between desktop, tablet and mobile. Easily plan routes on the web then follow along on the app when you’re on the go!

Main characteristics

OS Maps provides free and subscriber access to mapping content and other great features for Great Britain and Australia.




  • Most features in OS Maps work worldwide, however some are limited geographically.
  • Premium Topo Mapping is available down to 1:25k scale for Great Britain (England, Wales and Scotland), and down to 1:250k scale for the whole of Australia up to 1:250k scale. We also provide more detailed mapping for New South Wales, Queensland and Tasmani.
  • Augmented Reality is currently limited to Great Britain.
  • Offline Downloads are currently only available using Premium Topo Mapping (i.e. in Great Britain and Australia).


We use cookies and software analytics necessary to deliver OS Maps. We only process information about how you use OS Maps using trackers for our research into how OS Maps is being used with your consent. See our Privacy Policy for more details here. 


The app is compatible with devices running iOS 11 or Android 5 and higher.
The website supports the main internet browsers: Chrome, Edge, Safari and Firefox.


You will require around 100Mb of free device storage to download the app. You will require additional storage space for any offline maps you wish to download.

Internet connection

You will require an internet connection to use OS Maps Web and to download the OS Maps App )and any content you wish to use offline). Once the app is downloaded you do not require an internet connect to:

  • View offline maps which you have downloaded to your device
  • Use Augmented Reality Mode (GB only) if you have already set it up by downloading the data offline
  • Record, plot or follow a route if you have already downloaded the mapping for that area.

NB A premium subscription is required to create custom offline map downloads. For the best performance when downloading offline maps, we recommend using a good WiFi connection.

Access Type

An OS Maps Premium Subscription allows you to view, print* and download Premium Topo mapping to one device. See coverage for information on the Premium Topo data that’s available. Printing of maps is subject to a fair usage policy (no more than 30 prints per week per user), please see the EULA for more information.

It also gives you access to subscriber-only features such as AR Mode (GB only) and 3D mode on OS Maps Web.

Some features of the app are available to all users for free - such as Standard and Aerial Mapping, as well as the ability to plot or record routes.

Please see the FAQs for more information.

Access Conditions

Personal non-commercial use only is permitted for all OS Maps users.

The app may be installed on up to 5 devices.

Terms of use apply, see EULA for more details.

Map Updates

Map updates: We endeavour to provide the latest mapping updates from our suppliers as they become available. Please exercise independent judgement when using content from the app. Please see our EULA for more information on mapping updates and accuracy.

Rights to Cancel

Subscriptions are as advertised, minimum 1 month subscriptions; subscribers can request to cancel anytime (up to 2 working days prior to the expiry date) with cancellation coming into effect on the expiry of your current subscription. You can cancel your subscription at anytime up to 14 days after purchase, unless you have downloaded or otherwise accessed your subscription. Further details can be seen in the EULA here.


Further information about our product can be found via our FAQs support pages here.