> For the complete documentation index, see [llms.txt](https://help.felt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.felt.com/styling/style-vector-layers.md).

# Style vector layers

Style your points, lines and polygons by customizing style properties to create engaging Felt maps.

{% embed url="<https://www.youtube.com/watch?v=MnWHl-U47f8>" %}

{% embed url="<https://40056855.fs1.hubspotusercontent-na1.net/hubfs/40056855/StyleData_HelpCenter.mp4>" %}

The style editor provides different options for styling points, lines, and polygons, allowing you to control color, size, opacity, and many other visual properties. You can create simple maps or data-driven visualizations that vary based on attributes.

## The style editor

Once your data is uploaded to Felt you can style your layers with the style editor.

<figure><img src="https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2FGM09wqrw7Zk3mFo8lhvM%2Fimage%20(16).png?alt=media&amp;token=4352ae01-2339-47a3-b64e-c0140def3b83" alt="" width="375"><figcaption></figcaption></figure>

* To open the style editor, click on the layer you want to customize from the legend

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2FwbhRtYzKim6FHAN4fPRg%2FScreen%20Recording%202025-03-02%20at%202.08.59%E2%80%AFPM.mp4?alt=media&token=9e705ad1-1a96-427a-93fa-0d4d92389859>" %}

## Choosing your map type

Depending on the geometry of your vector layer (point, line or polygon), you will have different visualization options. To select your visualization choose it from the Type dropdown in the General section of the style editor.

<figure><img src="https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2Fgk31orSURvLRyLG0QcP2%2Fimage.png?alt=media&amp;token=5740a50b-424e-47be-888a-eefeae2cb571" alt="" width="296"><figcaption></figcaption></figure>

{% hint style="info" %}
If a polygon doesn't have a fill, popup interactions only work when clicking on the stroke (outline), not in the interior area. Make sure your polygon has a fill if you want clickable popups throughout.
{% endhint %}

### Simple

The default style when you upload a data layer — a single color for all features. Available for point, line and polygon layers.

<figure><img src="https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2FYR6bUmEYabmOfDkECYAt%2FScreenshot%202025-03-04%20at%209.41.18%E2%80%AFAM.png?alt=media&amp;token=d035efaf-0701-4a71-b866-74ab2620bac9" alt=""><figcaption></figcaption></figure>

### Categories

A categorical visualization maps a distinct color for every unique value of your chosen data attribute. A common type of categorical visualization are landuse maps where each landuse type is set to a distinct color. Available for point, line and polygon layers.

{% hint style="info" %}
Felt supports up to 256 unique categories in the legend.
{% endhint %}

<figure><img src="https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2Fx4E9OP1tyWEcQPa7npxV%2FScreenshot%202025-03-04%20at%209.40.24%E2%80%AFAM.png?alt=media&amp;token=9ece4832-7352-4e5e-a99c-107cd030c9f9" alt=""><figcaption></figcaption></figure>

### Color range

A color range visualization maps numeric data values to a gradient of colors, making patterns immediately visible. Traditionally used for choropleth maps with polygons, Felt extends this to points and lines as well. Colors can be applied continuously in direct proportion to values or grouped into distinct classes using various classification methods.

<figure><img src="https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2FiLy2L8Rb4ban4dTwTzpL%2FScreenshot%202025-03-04%20at%209.43.46%E2%80%AFAM.png?alt=media&amp;token=daa6922d-a430-42ce-9d48-8d021a85625a" alt=""><figcaption></figcaption></figure>

<details>

<summary>Learn more about classification methods for numeric data</summary>

There are many ways to style a data layer by a numeric field. For example, a **Continuous** style maps a color (or point size) for every unique value in your data, similarly to a categorical visualization. In this case, the color for each value is interpolated from the endpoint colors.

However, it’s more common to group values from numeric fields into *classes* (green from 0 to 5, yellow from 6 to 10, etc). Classes can be chosen manually or picked from one of Felt’s default classification methods:

* **Equal Intervals**: classes are split by an interval of constant value (0, 5, 10, 15…). Useful for evenly distributed data. Equal interval classifications are very sensitive to outliers - very small or large values can lead to the majority of values to be grouped into just one or two classes. This classification method follows an *Arithmetic Series*, where the value of each breakpoint is equal to the previous value plus a constant value.
* **Quantiles**: contrary to equal intervals, the quantiles classification ensures that every class contains the same number of values. This can look nice from a visual standpoint, but often quantiles classifications can be misleading, since the size of each class may vary widely. They work well for evenly distributed datasets.
* **Standard Deviation**: the Standard Deviation method chooses classes based on the number of standard deviations from the mean. This classification method works very well for data that follows a bell curve (a Gaussian or “normal” distribution).

By default, the legend in a Standard Deviation classification does not show the breakpoint values, using instead the nº of standard deviations.

* **Geometric Intervals**: a classification method where the size of each class increases exponentially, very useful for right-skewed data. The term “Geometric” comes from the fact that the class breaks are chosen from a *geometric series* (where each value equals the previous value, multiplied by a constant coefficient).
* **Jenks Natural Breaks:** the Jenks optimization method can be used to find “natural” classes inside your data by minimizing the variation inside classes while maximizing the variation between classes. It works well for most kinds of distributions, which is why it’s the default method in Felt.

</details>

### Size range

A size range visualization scales points and lines based on numeric values, emphasizing differences in magnitude. Sizes can be applied continuously in direct proportion to values or grouped into distinct classes using various classification methods. Available for point and line layers.

<figure><img src="https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2F3IfcxM2dhzejHC6bafgd%2FScreenshot%202025-03-04%20at%209.42.05%E2%80%AFAM.png?alt=media&amp;token=36d4a153-2ce7-4e9c-8ff1-5fb78f589408" alt=""><figcaption></figcaption></figure>

<details>

<summary>Learn more about classification methods for numeric data</summary>

There are many ways to style a data layer by a numeric field. For example, a **Continuous** style maps a color (or point size) for every unique value in your data, similarly to a categorical visualization. In this case, the color for each value is interpolated from the endpoint colors.

However, it’s more common to group values from numeric fields into *classes* (green from 0 to 5, yellow from 6 to 10, etc). Classes can be chosen manually or picked from one of Felt’s default classification methods:

* **Equal Intervals**: classes are split by an interval of constant value (0, 5, 10, 15…). Useful for evenly distributed data. Equal interval classifications are very sensitive to outliers - very small or large values can lead to the majority of values to be grouped into just one or two classes. This classification method follows an *Arithmetic Series*, where the value of each breakpoint is equal to the previous value plus a constant value.
* **Quantiles**: contrary to equal intervals, the quantiles classification ensures that every class contains the same number of values. This can look nice from a visual standpoint, but often quantiles classifications can be misleading, since the size of each class may vary widely. They work well for evenly distributed datasets.
* **Standard Deviation**: the Standard Deviation method chooses classes based on the number of standard deviations from the mean. This classification method works very well for data that follows a bell curve (a Gaussian or “normal” distribution).

By default, the legend in a Standard Deviation classification does not show the breakpoint values, using instead the nº of standard deviations.

* **Geometric Intervals**: a classification method where the size of each class increases exponentially, very useful for right-skewed data. The term “Geometric” comes from the fact that the class breaks are chosen from a *geometric series* (where each value equals the previous value, multiplied by a constant coefficient).
* **Jenks Natural Breaks:** the Jenks optimization method can be used to find “natural” classes inside your data by minimizing the variation inside classes while maximizing the variation between classes. It works well for most kinds of distributions, which is why it’s the default method in Felt.

</details>

### Heatmap

A heatmap visualization uses color gradients to represent point density, highlighting areas of higher and lower concentration. Colors transition smoothly to reflect varying densities, with options to adjust intensity, radius, and color scheme. Available for point layers.

<figure><img src="https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2FOY0fpTNP5FQpbnqxGPz4%2FScreenshot%202025-03-04%20at%2010.02.32%E2%80%AFAM.png?alt=media&amp;token=3058f3a6-adc8-4f1a-9cc0-a583253271b7" alt=""><figcaption></figcaption></figure>

### H3

A H3 visualization groups points into hexagons, displaying point counts or aggregated numeric attributes (sum, average, max, or min). Choose a fixed H3 resolution for a consistent view across zoom levels or allow the resolution to adjust dynamically. Use popups to reveal additional aggregated values on hover or click. Available for point layers.

Check out [this video](https://www.youtube.com/watch?v=-9gIkHuJCMY) to learn more about H3 visualizations.

<figure><img src="https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2FG3pH9saLv26RnoLsoMe9%2FScreenshot%202025-03-04%20at%2010.03.50%E2%80%AFAM.png?alt=media&amp;token=fefb9675-706b-41eb-8241-3d24a731fa51" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Filtered H3 visualizations are estimates. For optimal accuracy, create a new layer from the filter and apply the H3 visualization to the new layer.
{% endhint %}

### Icons

To choose built-in icons or emoji for points, or upload your own, see [Icons](/styling/icons.md).

### Fill patterns

Fill polygons with a repeating pattern instead of a solid color — hatching for disputed areas, dots for soil types, and other classic cartographic textures. Available for polygon layers using the Simple visualization type.

To apply a pattern:

* Click **Fill** in the **Polygon** section of the style editor
* In the **Fill style** section below the color picker, choose a style: **Solid**, **Hatch**, **Reverse hatch**, **Cross-hatch**, **Horizontal lines**, **Vertical lines**, or **Dots**
* Adjust **Spacing** to control the gap between lines or dots, and **Thickness** to control their weight

Felt draws the pattern in the layer's fill color, and the basemap shows through between the strokes. The legend and the Fill chip both update to match the pattern on the map. Patterns also follow [zoom-based fill colors](/styling/zoom-based-styling.md#interpolating-style-properties), so a pattern can change color as viewers zoom in or out.

{% hint style="info" %}
Fill patterns are currently only available with the Simple visualization type. Switching a patterned layer to Categories or Color range clears the pattern.
{% endhint %}

## Labels

Label options have their own page: [Labels](/styling/labels.md).

## Zoom-based styling

To change visibility, size, color and other properties as the map zooms, see [Zoom-based styling](/styling/zoom-based-styling.md).

## Customizing your legend

To add captions and change display names and colors in the legend, see [Customizing your legend](/layers/legend.md#customizing-your-legend).

## Style multiple layers at once

Select two or more layers to style them all at once from the Legend or [List](/layers/organize-layers.md) view. Use **Shift+click** to select a range or **Cmd+click** (Mac) / **Ctrl+click** (Windows) to add layers individually.

With multiple layers selected, the style panel opens with the same controls as the single-layer Style tab, and every edit you make applies to the whole selection. This is the fastest way to turn off popups or legends for a batch of layers, or to give them all the same color or label style.

Controls are grouped by geometry type, so a mixed selection of points, lines, and polygons shows a section for each (heatmaps get their own section too). The following apply across the whole selection:

* Geometry styling — fill (including patterns), stroke, casing, size, opacity, icons, and position
* Labels — all label controls
* Legend visibility (show/hide)
* Popup interaction
* Visibility range

### Mixed values

When the selected layers don't already share the same value for a control, that control reads **Mixed** instead of showing a value. Setting a new value from **Mixed** applies it to every layer in the selection. Each change you make — including one made from **Mixed** — is a single undo step across the whole selection.

### Label by

The **Label by** dropdown lists only the columns every selected layer has, so any column you choose can be applied to all of them. If the layers currently label by different columns, it reads **Mixed**. If the layers share no columns at all, the dropdown has nothing to offer, but the label section stays open and the rest of the label styling remains editable across the selection.

### What stays per layer

A few settings are still edited one layer at a time, even within a multi-layer selection: classification and categories, color-by, legend contents, per-band raster settings, and popup contents. These follow one representative layer from your selection.

## Resetting layer styles

If at any point you want to go back to a layer's original style, click **Actions > Reset styles** from a layer’s overflow (**···**) menu.

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2FVk2x9p5rIIbeeI96W5eA%2FScreen%20Recording%202025-03-03%20at%208.15.25%E2%80%AFPM.mp4?alt=media&token=8a5b81fc-17e6-4eee-bcf3-c9b8cb7ead87>" %}

## Advanced styling

For the Felt Style Language (FSL) and MapLibre style overrides, see [Advanced styling (FSL)](/styling/advanced-styling-fsl.md).

## Styling vector tiles

See [Styling vector tiles](/upload-anything/urls/vector-tiles.md#styling-vector-tiles).

## Frequently asked questions

<details>

<summary>How do I open the style editor?</summary>

Open a map in Edit mode and then click on any layer in your map legend to open the style editor. It will appear on the right-side.

</details>

<details>

<summary>Can I reset a layer to its original style?</summary>

Yes! Click on the layer's **···** menu and select Actions > Reset styles to revert to the default styling.

</details>

<details>

<summary>What visualization types are available in Felt?</summary>

Felt offers several visualization types depending on your layer geometry:

* **Simple**: One color for all features (points, lines, polygons)
* **Categories**: Distinct colors for unique attribute values (points, lines, polygons)
* **Color range**: Gradient colors based on numeric values (points, lines, polygons)
* **Size range**: Scaled sizing based on numeric values (points, lines)
* **Heatmap**: Density visualization using color gradients (points only)
* **H3**: Hexagonal aggregation of point data (points only)

</details>

<details>

<summary>How many categories can I display in a categorical map?</summary>

Felt supports up to 256 unique categories in the legend.

</details>

<details>

<summary>What's the difference between Color range and Size range?</summary>

Color range applies color gradients based on numeric values, while Size range changes the physical size of points or line thickness based on numeric values. Both can help emphasize patterns in your data.

</details>

<details>

<summary>Can I do per-category styling in Felt?</summary>

Yes! Per-category styling is available for Categorical, non-continuous Color range, and non-continuous Size range visualization types. One example of this is setting different icons for various POI categories on a map.

To access specific styling for each class or category, click on the **All Points**, **All Lines**, or **All Polygons** menu when styling the appearance and drill down into the specific settings for that group of features.

<figure><img src="https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2FhVBwPRMqpYR99u9ek2eI%2Fimage.png?alt=media&amp;token=cbe81e70-dbcc-4009-a53a-c87344940c74" alt="" width="375"><figcaption></figcaption></figure>

</details>

<details>

<summary>What is an H3 visualization? Does Felt support H3?</summary>

H3 visualizations group points into hexagons and can display point counts or aggregate numeric attributes (sum, average, max, or min). You can use fixed or dynamic resolution levels. Felt supports visualizing points as H3 hexagons as well as H3 geomatching (see [Spreadsheets and geocoding](/upload-anything/files/spreadsheets-and-geocoding.md#h3-geomatching)).

</details>

<details>

<summary>Can I fill polygons with a pattern like hatching or dots?</summary>

Yes! For polygon layers using the Simple visualization type, click **Fill** in the style editor and choose a pattern in the **Fill style** section: Hatch, Reverse hatch, Cross-hatch, Horizontal lines, Vertical lines, or Dots. The **Spacing** and **Thickness** sliders control the density and weight of the pattern, and it is drawn in the layer's fill color.

</details>

<details>

<summary>How can I control visibility at different zoom levels?</summary>

Use the **Limit visibility** option ![](https://217108486-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmRfGitkyjOEMvVsEyGWN%2Fuploads%2FeBYvIEgVQnaoZksci9Ji%2FUIIconButton.png?alt=media\&token=32b4f6dc-052d-47b9-8506-1786a9a39557) to set a visible zoom range for features and labels.

</details>

<details>

<summary>Can I change styling properties at different zoom levels?</summary>

Yes! You can interpolate style properties like line thickness, opacity, and color between zoom levels, so features automatically adjust as users zoom in or out.

</details>

<details>

<summary>How can I customize my legend?</summary>

In the Legend section of the style editor, you can add captions, adjust colors, and edit display names to make your legend more informative and visually cohesive.

</details>

<details>

<summary>Why aren't my popups working on polygons?</summary>

If a polygon doesn't have a fill, popup interactions only work when clicking on the stroke (outline), not in the interior area. Make sure your polygon has a fill if you want clickable popups throughout.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.felt.com/styling/style-vector-layers.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
