Introduction: Create Custom Maps for Your Garmin GPS

About: I'm an environmental biologist who doesn't always have enough time or energy to make the stuff he'd like to make. I enjoy the outdoors, geocaching, kayaking, and playing around with mapping/GIS applications. I…

If you have a Garmin GPS designed for hiking and other outdoor activities (including the GPSMAP, eTrex, Colorado, Dakota, Oregon, and Montana series, among a few others), you don't have to settle for the bare-bones maps that came pre-loaded on it. Even if your unit came with TOPO maps, you can improve the functionality of your GPS by creating and uploading custom maps of areas you explore often.

Garmin provides instructions for doing this here, but there's a catch. Garmin has purposefully included limitations on the size and number of custom maps you can upload to your device to encourage you to purchase their premium maps. Of course, they won't tell you some clever tricks to get around them! While it's not possible to completely circumvent Garmin's limitations, there are a wealth of tools online - some free, and some not - that can help you make better custom maps. So many tools and suggestions, in fact, that it's a bit overwhelming.

In this Instructable, I'll lay out a simple process I've come up with for making custom maps for Garmin outdoor GPS units and share the entirely free tools I use to do it.

Please note that many of the screenshots in this Instructable look pretty bad. I believe this is due to compression used by the website when loading the images. You can download the originals or rely on my descriptions to get a sense of image quality.


  • Garmin outdoor GPS unit that supports Custom Maps (see the list at the bottom of Garmin's instructions, linked above also)
  • PC able to run the following software (You can create these maps on a Mac as well, but some of the software I like to use is PC-only)
  • Google Earth Pro for desktop (free)
  • GIMP (free), Photoshop (not free), or similar
  • KMZFactory (free)

Step 1: The Limitations of Garmin Custom Maps

To encourage us all to pay for their premium maps and services, Garmin has placed several limitations on the size and number of custom maps that can be uploaded to their GPS devices. These limitations are:

  • Map images over 1 megapixel in size (1024x1024 pixels, 512x2048 pixels..... in short, any image that contains more than 1048576 pixels) will be displayed at a reduced resolution on your GPS. In other words, fine map details and text will become indistinguishable.
  • All map image files must be less than 3 MB
  • Depending on your device (details here), you can upload no more than 100 or 500 custom map images or tiles. It doesn't matter if you have the storage space, any more and they won't load.

While there is no way to completely get around these limitations, we can use a method called map tiling to upload maps that are larger than these limits and view them in full resolution. When a map is tiled, it is divided into smaller pieces, or "tiles" which are displayed adjacent to each other, creating a seamless image. Doing this manually can be very frustrating and a lot of work for a large map.

Step 2: Getting Started

To get started, we'll of course need a map! For this Instructable, I'll be using a map of Olympic National Park that I downloaded from the Park's website. However, you can use a map image file you've already got, scan a paper map into your computer, or even take a screenshot of Google Maps.

The map of Olympic I downloaded is 26.6 MB and in PDF format.

Here's a screenshot of this map open in my PDF viewer, zoomed in to 190%. It looks pretty good! The detail is very crisp and all of the text is readable.

Step 3: Converting the Map to JPEG

My map is a PDF file, so the first thing I'll need to do to get the map onto my GPS is convert it into a JPEG. To do this, I'll be using GIMP, a free open source image editor with functionality similar to Photoshop.

Since a PDF is not an image file, upon opening GIMP prompts me to import the PDF and gives me some options.

The real thing we need to pay attention to here is the resolution. Don't worry about the GPS's image size limit yet, though. For now, we'll just focus on keeping the map looking good as it's converted into an image. First I'll try the default resolution of 100 pixels/in and see how that looks.

Looks...... eh. It's okay, but some of the small text is getting hard to read. This may be just fine for your purposes, and that's great. I'm going to close this and import the PDF map again, this time setting the resolution to 200pixels/in.

And it looks great. All of the text and important detail is clear. Spend some time playing around with the resolution until you find a setting that looks good.

Now is also a great time to crop your map if it has any boarders or frames you don't want to see when you load it onto your GPS. In GIMP, this can be done by selecting Tools>Transform Tools>Crop. Then select the area you want to keep and press Enter on your keyboard.

Now we'll export the map into the JPEG image format. Select File > Export As...

Give your map a name, then click "Select File Type (By Extension)" near the bottom of the Export window and select JPEG image. Click Export.

Now you should be presented with even more options! But there are some important settings here, don't just click Export again. First, slide the Quality setting all the way up to 100. Next, open the Advanced Options. Be sure to deselect the checkbox next to "Progressive." If you don't do this, everything will work until you upload the map onto your GPS, when it suddenly won't show up.

Step 4: Georeferencing the Map

Now that our map is in the JPEG format, it's time to georeference it. In other words, we are going to tell the computer where this map image belongs on the globe. Open up the desktop version of Google Earth Pro and navigate to the approximate area where your map belongs.

Now select Add > Image Overlay. Give your map a name, then hit the Browse button and open the JPEG image you just saved. Then adjust the Transparency slider to right about in the middle. This will allow you to see the globe in Google Earth through your JPEG overlay.

Now move the Overlay Properties window to the side and use the green "handles" to line the overlap up with the map beneath. This is by far the most time-consuming part of the process. First, I would suggest rotating the overlay (using the diamond-shaped "handle") to roughly the correct orientation. Then roughly match up roads or easily distinguished buildings near the corners of the map. Rotate the map again if needed to make roads on the overlay parallel with those on the globe, then make your final adjustments. Note that often it is not possible to perfectly line up every road, building, body of water, etc. Line it up as well as you can, and keep in mind that for general outdoor activities like hiking, it won't matter if a road or trail is off by a few yards.

One word of caution: Under the "Location" tab in the Overlay Properties window, there is an option to "Convert to LatLonQuad." This option makes it much easier to line the overlay up with the map below, but do not select it or the map will not work on your GPS.

Once your map is aligned with the globe, click over to the Altitude tab and set the Draw Order to 50 or higher so your custom map will appear on top of the default basemap on your GPS.

Hit OK to close the Overlay Properties, then find your map under "My Places" in the Google Earth sidebar. Right click it, and select "Save Place As..." Remember whether you're saving the file as a KML or KMZ (either is fine), and save it in a spot you'll remember too.

The hard work is done!

Also note: You can overlay multiple custom maps at once. If they overlap, maps with a higher Draw Order value will be displayed over maps with a lower value. Keep in mind that no matter what Transparency setting you select in Google Earth, all custom maps will be fully opaque once displayed on the GPS.

Step 5: Tiling the Map

Now we'll tile the map if needed and upload it to our GPS. Remember, tiling is a process by which the map is split up into smaller "tiles" which are later displayed adjacent to each other to create the full map. This helps us get around Garmin's pixel limit for custom maps.

Open up KMZFactory and open the KML or KMZ file you just saved. Once you open your file, KMZFactory presents you with a slate of settings. If your map has a border you didn't crop off before and you'd like to do it now, KMZFactory has a tool to do this in the middle third of the window. You'll also see here that KMZFactory has automatically chosen a number of tiles to spit up your map to ensure that each tile is below Garmin's pixel limit.

In the bottom third of the window, enter the map's name as you'd like it to show up on your GPS in the "Image Tag" field. I like to note the number of tiles the map contains at the end of the file name for future reference. Leave the Projection set to "Mercator," you can change this later if your map doesn't display correctly. Make sure the Draw Order is set to 50 or higher so the map appears on top of the basemap on your GPS. Finally, decide how you'd like to set the JPG Quality. If you have a newer GPS unit like mine with plenty of storage space or a map with a lot of fine details, you might choose to set the quality to 100 to get the crispest image possible. If, on the other hand, you have limited space on your GPS or a very basic map, you can leave this setting at 80 or set it even lower. As an example, my map of Olympic takes up about 2 MB when the JPG Quality is set to 80, and about 8 MB when the quality is set to 100. Honestly, this map looks fine at the default quality setting of 80.

The really good news about all of this is that the KML or KMZ file you created in Google Earth won't be changed by KMZFactory. If you're unhappy with any of the settings you choose, you can reload the map into KMZFactory and try again.

Finally, click "Create KMZ File" and save it in a location you'll remember. You can then open this file in Google Earth to make sure it looks alright. If you'd like to load it directly onto your GPS, continue to the next step.

Step 6: Loading the Custom Map to Your GPS

Connect your GPS to your computer with its cord, and find it in the file browser. Navigate to the folder Garmin > CustomMaps, this is where you will save the KMZ file generated by KMZFactory. If this folder doesn't exist, create it. Save the file here directly with KMZFactory, or move the file to this folder from wherever it was saved. Now right-click on your GPS in the file browser, "Eject" it, unplug it, and power it up!

Step 7: View the Custom Map on Your GPS

In order to see the custom map on your GPS, you'll have to enable it in the map settings. Navigate to Main Menu>Setup>Map>Map Information>Custom Maps on your GPS (I have a GPSMap 64, this could be slightly different on other units) and enable the map you just created. Now it should show up on the GPS! If you ever want to turn the custom map off, you can also do that here.

Step 8: Potential Problems and Solutions

Here are some mistakes I've made /problems I've had and solutions for them. If you have any other problems, post about them in the comments and we can try to find a solution to add to this step.

The map doesn't show up at all on your GPS

  • Did you turn off the "Progressive" setting when you saved the JPEG?
  • Is the KMZ file in the Garmin>CustomMaps folder on your GPS?

  • Do you have an older GPS? If so, you might try the "Maximize compatibility" setting in KMZFactory.

The vertical center of the map is distorted.

  • Try the other Projection setting in KMZFactory

I would also highly recommend reading the documentation PDF that comes with KMZFactory if you'd like to know more about this process or to learn more about the Projection setting.

Maps Challenge

Participated in the
Maps Challenge