turf.length
What is turf.length?
turf.length takes a GeoJSON LineString, MultiLineString, or a Feature/FeatureCollection containing them and returns the total length as a number. It walks every segment and sums haversine distances between consecutive vertices — the same formula turf.distance uses.
turf.length(geojson, options?) → numberOptions include:
units—'kilometers'(default),'meters','miles','nauticalmiles','radians','degrees'
When would you use turf.length?
Use turf.length to display the length of a user-drawn route on a MapLibre map, compute trail mileage for a hiking app, or aggregate network length by road class in a Node.js pipeline. It pairs naturally with turf.along when you want to chunk a route, place mileposts, or animate along the line.
For polygons you want perimeter of, convert with turf.polygonToLine first and then call turf.length. For point-to-line distance, use turf.pointToLineDistance.
undefinedFAQs
Does it include every vertex or just endpoints?
Every vertex. turf.length walks each segment of the line and sums haversine distances, so densely digitised curves produce more accurate real-world length than coarse polylines.
How do I install just length?
npm install @turf/length. It depends on @turf/distance and @turf/meta and is very small.
Is a FeatureCollection supported?
Yes. turf.length accepts any GeoJSON container and sums the lengths of all LineString and MultiLineString parts it finds. Non-line features are ignored.
Why is my measured length shorter than what Google Maps says?
Usually because the input line is less densely digitised — haversine sums straight-line chords between vertices, so a polyline with few points in a curve underestimates a smooth real-world path. Densify the line (e.g. via turf.lineChunk) if you need closer agreement.