How to Open a Shapefile Online Without QGIS
You do not need QGIS, ArcGIS or any install to open a Shapefile. Put the .shp, .shx, .dbf and .prj (and the .cpg, if there is one) into a single zip, drop that zip on a free browser viewer, and the layer draws on a map with its attribute table, ready to click, edit, label and export as GeoJSON, KML or CSV. Nothing is uploaded; the file is parsed in your browser. That is the whole answer. The rest of this page is the step by step, the three ways it goes wrong, and when you actually do need QGIS.
Everything below was run on 10 September 2026 with GDAL 3.13.3 "Iowa City" and the live viewer; what they printed is quoted; whitespace collapsed.
What you need
A Shapefile is a set of files with the same base name.
.shp,.shxand.dbfare mandatory: geometry, its index, and the attribute table. A.shpalone draws shapes with no attributes..prjis optional and you want it: it says which coordinate system the numbers are in. Without it the layer lands in the wrong place..cpgsays which text encoding the.dbfuses. If your attributes have accents you need it, and it has to travel inside the zip.- Zipped or loose, the viewer takes either: one
.zip, a lone.shp, or the.shp,.dbf,.prjand.shxselected together. Zip the files, not the folder.
Open it in the browser, step by step
Open the free Shapefile viewer. It parses the file in the browser, so nothing leaves your machine. The steps below are everything it does.
Drop the file
Drag the zip onto the drop zone, or click it and pick the files. The map zooms to the layer and the attribute table opens beside it. The layers panel (top right of the map) lists the file with its feature count and geometry types, 2 features and 2 Point for our test file, and its details show the CRS the .prj declares, GCS_WGS_1984 here, and the bounds.
Read the attribute table
One row per feature, one column per field, plus File and Type. Click a header to sort, type in the search box to filter, use the Columns button to hide fields. If a value looks wrong here, it is wrong in the .dbf.
Click a feature
Click any shape and the Attributes panel opens with its name, type, area or length and every field, plus buttons to center the map on it and to copy its geometry as WKT.
Edit an attribute
Every field in the Attributes panel has an edit button. Change a value, rename a field, delete one or add one; a new field goes on every feature in the file, and the panel asks first. The layers panel has undo, redo and a reset. Edits live in the browser only; to keep them, export.
Set a map label
In the layers panel each file has a Label dropdown listing its fields. Pick one and its value is drawn next to every feature.
Export to GeoJSON, KML or CSV
The Export menu in the layers panel writes everything loaded, edits included, as GeoJSON for a web map, KML for Google Earth, or CSV for a spreadsheet. It is one file for all loaded layers, and the viewer does not write GeoPackage or KMZ; for those, convert.
The three things that go wrong
All three were reproduced and dropped into the viewer; each ends with the section of the Shapefile guide that goes deeper.
No .prj: the layer is in the ocean
We wrote a two point Shapefile in SIRGAS 2000 / UTM zone 23S and deleted its .prj. ogrinfo -al -so noprj.shp still opens it, but Layer SRS WKT: is followed by (unknown) and the extent is in metres: (70374.518501, 7180554.686984) - (333624.181244, 7394647.522132).
Dropped into the viewer as a zip, the map is solid blue with nothing on it; the details have no CRS row and bounds of 70014.518501, -5.313016, which is not a place. Dropped as loose files, the two points draw with bounds 0.632185, 54.054869 to 2.996997, 55.168552: the North Sea, for points that belong in Curitiba and São Paulo.
Two commands fix it, and they are not interchangeable. Assign, when the numbers are right and only the label is missing: ogr2ogr -a_srs EPSG:31983 fixed.shp noprj.shp writes a .prj, changes no coordinate, and ogrinfo now prints PROJCRS["SIRGAS 2000 / UTM zone 23S". Reproject, when you need another system: ogr2ogr -s_srs EPSG:31983 -t_srs EPSG:4326 wgs84.shp noprj.shp recomputes every coordinate, and the extent becomes (-49.270000, -25.430000) - (-46.630000, -23.550000). Without -s_srs it fails: ERROR 1: Can't transform coordinates, source layer has no coordinate system. Use -s_srs to set one. The Shapefile guide has a section on the .prj and the layer in the ocean.
Accents turn into question marks: the .cpg did not travel
We wrote a .dbf in Latin-1 with ogr2ogr -f "ESRI Shapefile" -lco ENCODING=ISO-8859-1 latin1.shp pts.geojson, values São João and Açúcar, and zipped it with and without the .cpg. With it, the viewer's table shows São João and Açúcar. Without it, the same table shows S�o Jo�o and A��car: the bytes are Latin-1 and nothing says so. GDAL does the same; ogrinfo -al on the copy without the .cpg prints name (String) = S�o Jo�o.
So the fix is: zip it with the .cpg. The loose file input takes .shp, .dbf, .prj and .shx only, so a .cpg dropped beside them is ignored; inside the zip it is read. If there is no .cpg and you know the file is Latin-1, rewrite it once with ogr2ogr -f "ESRI Shapefile" -oo ENCODING=ISO-8859-1 -lco ENCODING=UTF-8 utf8.shp latin1.shp, which converts the text and writes a .cpg containing UTF-8; ogrinfo -al on the result prints name (String) = São João. Without -oo ENCODING, GDAL copies the Latin-1 bytes untouched and writes a .cpg saying UTF-8 — worse than no .cpg. The Shapefile guide has a section on Latin-1 by default and the .cpg sidecar.
A zip with two Shapefiles inside: you get one layer
We zipped a point layer (cities, two features) and a line layer (roads, one) into one two.zip and dropped it. The viewer loads a single entry named two.zip with 3 features, 1 Line and 2 Point, and the table has the union of the columns, name, cidade and road, blank where a feature has no such field. Nothing is lost, but the two files are now one layer with one label setting.
If you need them apart, zip each Shapefile on its own and load them one at a time: drop the first, then use Add in the layers panel for the second, and each becomes its own entry with its own label. When we dropped two zips in one gesture, only the first loaded. On the command line, ogrinfo -so /vsizip/two.zip lists 1: cities (Point) and 2: roads (Line String), and ogr2ogr -f "ESRI Shapefile" roads.shp /vsizip/two.zip roads writes just the second. A Shapefile is one layer of one geometry type by definition; the Shapefile guide has a section on one geometry type per file.
When you actually need QGIS
The viewer is for looking, checking, a light edit and a quick export. It is not a GIS, and these jobs need one.
- Reprojecting or assigning a coordinate system: the viewer draws what the
.prjsays and cannot change it. - Joining the attribute table to a spreadsheet, or computing new fields from old ones.
- Styling for print: graduated colours, rule based labels, a legend, a scale bar, a layout.
- Editing geometry at scale, with snapping and topology checks.
- Rasters, or a layer too big for a browser tab.
QGIS is free, and GDAL is a single package on Linux and macOS; on Windows it comes with OSGeo4W or conda.
Convert it instead
Often the right move is to stop carrying five files around. Each command was run on the test files.
- To GeoPackage, one file with real UTF-8:
ogr2ogr -f GPKG out.gpkg in.shp;ogrinfo -so out.gpkglists1: cities (Point). The GeoPackage guide covers what changes on the way. - To KML for Google Earth:
ogr2ogr -f KML out.kml in.shpwrites a KML 2.2 document. What KML keeps and drops, and how to open the result without Google Earth, is in the KML/KMZ guide. - To GeoJSON for a web map:
ogr2ogr -f GeoJSON -t_srs EPSG:4326 out.geojson in.shp, or the viewer's export, which also writes WGS 84.
For teams
Opening the file is the easy half. Someone sent you a Shapefile because a team has to work on it: the polygons need a status, the points need photos and a form, someone reviews what came back from the field and someone else needs the report by Friday. Geodocs takes the same file onto a team map, keeps the attributes as fields the team fills in, runs the review, and produces the report, map included. The viewer is where you check the file; the workspace is where it becomes work.