# angle icon

Angle. Gentleface icon, drawn on the 16 px pixel grid. Free, MIT licensed. Page: https://gentleface.com/icons/angle

- Category: Design
- Use it for: angle, measure angle, angle tool
- Tags: angle, degrees, measure, protractor, geometry, rotation
- Component name: AngleIcon
- Added: 2026-10-16

## Also fits

- measure: measure an angle
- geometry: angles and their measure

## Files

Each SVG is 16 × 16 with fill="currentColor". Keep it at 16 px or an exact multiple (32, 48) on whole pixels: a fractional size or position blurs it.

- line-round: https://gentleface.com/svg/line-round/16/angle.svg · PNG https://gentleface.com/png/line-round/16/angle.png · https://gentleface.com/png/line-round/32/angle.png · https://gentleface.com/png/line-round/48/angle.png
- line-soft: https://gentleface.com/svg/line-soft/16/angle.svg · PNG https://gentleface.com/png/line-soft/16/angle.png · https://gentleface.com/png/line-soft/32/angle.png · https://gentleface.com/png/line-soft/48/angle.png
- line-sharp: https://gentleface.com/svg/line-sharp/16/angle.svg · PNG https://gentleface.com/png/line-sharp/16/angle.png · https://gentleface.com/png/line-sharp/32/angle.png · https://gentleface.com/png/line-sharp/48/angle.png
- solid-round: https://gentleface.com/svg/solid-round/16/angle.svg · PNG https://gentleface.com/png/solid-round/16/angle.png · https://gentleface.com/png/solid-round/32/angle.png · https://gentleface.com/png/solid-round/48/angle.png
- solid-soft: https://gentleface.com/svg/solid-soft/16/angle.svg · PNG https://gentleface.com/png/solid-soft/16/angle.png · https://gentleface.com/png/solid-soft/32/angle.png · https://gentleface.com/png/solid-soft/48/angle.png
- solid-sharp: https://gentleface.com/svg/solid-sharp/16/angle.svg · PNG https://gentleface.com/png/solid-sharp/16/angle.png · https://gentleface.com/png/solid-sharp/32/angle.png · https://gentleface.com/png/solid-sharp/48/angle.png

The SVG of every style: https://gentleface.com/icons/angle.json (`svg`).

## Code (line-round)

The snippets are decorative (aria-hidden). For an icon that carries meaning on its own, such as an icon-only button, label the button, or give the SVG role="img" and an aria-label. For another style, take its SVG from the JSON and swap the path `d`.

### SVG

```svg
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M7.436 9.271C7.883 9.791 8.24 10.371 8.505 11.013C8.771 11.654 8.929 12.316 8.981 13L13.5 13C13.641 13 13.759 13.048 13.856 13.144C13.952 13.241 14 13.359 14 13.5C14 13.641 13.952 13.759 13.856 13.856C13.759 13.952 13.641 14 13.5 14L2.5 14C2.362 14 2.244 13.951 2.146 13.854C2.047 13.754 1.997 13.636 1.997 13.5C1.997 13.364 2.047 13.246 2.146 13.146L13.146 2.146C13.246 2.047 13.364 1.997 13.5 1.997C13.636 1.997 13.754 2.047 13.854 2.146C13.951 2.244 14 2.362 14 2.5C14 2.638 13.951 2.756 13.854 2.854L7.436 9.271ZM7.581 11.395C7.367 10.877 7.082 10.405 6.727 9.98L3.707 13L7.978 13C7.928 12.449 7.796 11.914 7.581 11.395Z"/></svg>
```

### React

```tsx
// Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle
import type { SVGProps } from 'react';

export function AngleIcon(props: SVGProps<SVGSVGElement>) {
  return (
    <svg xmlns="http://www.w3.org/2000/svg" width={16} height={16} viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" {...props}>
      <path d="M7.436 9.271C7.883 9.791 8.24 10.371 8.505 11.013C8.771 11.654 8.929 12.316 8.981 13L13.5 13C13.641 13 13.759 13.048 13.856 13.144C13.952 13.241 14 13.359 14 13.5C14 13.641 13.952 13.759 13.856 13.856C13.759 13.952 13.641 14 13.5 14L2.5 14C2.362 14 2.244 13.951 2.146 13.854C2.047 13.754 1.997 13.636 1.997 13.5C1.997 13.364 2.047 13.246 2.146 13.146L13.146 2.146C13.246 2.047 13.364 1.997 13.5 1.997C13.636 1.997 13.754 2.047 13.854 2.146C13.951 2.244 14 2.362 14 2.5C14 2.638 13.951 2.756 13.854 2.854L7.436 9.271ZM7.581 11.395C7.367 10.877 7.082 10.405 6.727 9.98L3.707 13L7.978 13C7.928 12.449 7.796 11.914 7.581 11.395Z" />
    </svg>
  );
}
```

### Vue

```vue
<!-- Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle -->
<template>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
    <path d="M7.436 9.271C7.883 9.791 8.24 10.371 8.505 11.013C8.771 11.654 8.929 12.316 8.981 13L13.5 13C13.641 13 13.759 13.048 13.856 13.144C13.952 13.241 14 13.359 14 13.5C14 13.641 13.952 13.759 13.856 13.856C13.759 13.952 13.641 14 13.5 14L2.5 14C2.362 14 2.244 13.951 2.146 13.854C2.047 13.754 1.997 13.636 1.997 13.5C1.997 13.364 2.047 13.246 2.146 13.146L13.146 2.146C13.246 2.047 13.364 1.997 13.5 1.997C13.636 1.997 13.754 2.047 13.854 2.146C13.951 2.244 14 2.362 14 2.5C14 2.638 13.951 2.756 13.854 2.854L7.436 9.271ZM7.581 11.395C7.367 10.877 7.082 10.405 6.727 9.98L3.707 13L7.978 13C7.928 12.449 7.796 11.914 7.581 11.395Z" />
  </svg>
</template>
```

### Svelte

```svelte
<!-- Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle -->
<script>
  let props = $props();
</script>

<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" {...props}>
  <path d="M7.436 9.271C7.883 9.791 8.24 10.371 8.505 11.013C8.771 11.654 8.929 12.316 8.981 13L13.5 13C13.641 13 13.759 13.048 13.856 13.144C13.952 13.241 14 13.359 14 13.5C14 13.641 13.952 13.759 13.856 13.856C13.759 13.952 13.641 14 13.5 14L2.5 14C2.362 14 2.244 13.951 2.146 13.854C2.047 13.754 1.997 13.636 1.997 13.5C1.997 13.364 2.047 13.246 2.146 13.146L13.146 2.146C13.246 2.047 13.364 1.997 13.5 1.997C13.636 1.997 13.754 2.047 13.854 2.146C13.951 2.244 14 2.362 14 2.5C14 2.638 13.951 2.756 13.854 2.854L7.436 9.271ZM7.581 11.395C7.367 10.877 7.082 10.405 6.727 9.98L3.707 13L7.978 13C7.928 12.449 7.796 11.914 7.581 11.395Z" />
</svg>
```

### HTML img

```html
<!-- Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle. An <img> can't take currentColor: it draws black. Inline the SVG or use the CSS mask to color it. -->
<img src="https://gentleface.com/svg/line-round/16/angle.svg" width="16" height="16" alt="">
```

### CSS

```css
/* Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle. Takes the text color. */
.icon-angle {
  display: inline-block;
  width: 16px;
  height: 16px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M7.436 9.271C7.883 9.791 8.24 10.371 8.505 11.013C8.771 11.654 8.929 12.316 8.981 13L13.5 13C13.641 13 13.759 13.048 13.856 13.144C13.952 13.241 14 13.359 14 13.5C14 13.641 13.952 13.759 13.856 13.856C13.759 13.952 13.641 14 13.5 14L2.5 14C2.362 14 2.244 13.951 2.146 13.854C2.047 13.754 1.997 13.636 1.997 13.5C1.997 13.364 2.047 13.246 2.146 13.146L13.146 2.146C13.246 2.047 13.364 1.997 13.5 1.997C13.636 1.997 13.754 2.047 13.854 2.146C13.951 2.244 14 2.362 14 2.5C14 2.638 13.951 2.756 13.854 2.854L7.436 9.271ZM7.581 11.395C7.367 10.877 7.082 10.405 6.727 9.98L3.707 13L7.978 13C7.928 12.449 7.796 11.914 7.581 11.395Z'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M7.436 9.271C7.883 9.791 8.24 10.371 8.505 11.013C8.771 11.654 8.929 12.316 8.981 13L13.5 13C13.641 13 13.759 13.048 13.856 13.144C13.952 13.241 14 13.359 14 13.5C14 13.641 13.952 13.759 13.856 13.856C13.759 13.952 13.641 14 13.5 14L2.5 14C2.362 14 2.244 13.951 2.146 13.854C2.047 13.754 1.997 13.636 1.997 13.5C1.997 13.364 2.047 13.246 2.146 13.146L13.146 2.146C13.246 2.047 13.364 1.997 13.5 1.997C13.636 1.997 13.754 2.047 13.854 2.146C13.951 2.244 14 2.362 14 2.5C14 2.638 13.951 2.756 13.854 2.854L7.436 9.271ZM7.581 11.395C7.367 10.877 7.082 10.405 6.727 9.98L3.707 13L7.978 13C7.928 12.449 7.796 11.914 7.581 11.395Z'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
}
```

### Data URL

```text
data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M7.436 9.271C7.883 9.791 8.24 10.371 8.505 11.013C8.771 11.654 8.929 12.316 8.981 13L13.5 13C13.641 13 13.759 13.048 13.856 13.144C13.952 13.241 14 13.359 14 13.5C14 13.641 13.952 13.759 13.856 13.856C13.759 13.952 13.641 14 13.5 14L2.5 14C2.362 14 2.244 13.951 2.146 13.854C2.047 13.754 1.997 13.636 1.997 13.5C1.997 13.364 2.047 13.246 2.146 13.146L13.146 2.146C13.246 2.047 13.364 1.997 13.5 1.997C13.636 1.997 13.754 2.047 13.854 2.146C13.951 2.244 14 2.362 14 2.5C14 2.638 13.951 2.756 13.854 2.854L7.436 9.271ZM7.581 11.395C7.367 10.877 7.082 10.405 6.727 9.98L3.707 13L7.978 13C7.928 12.449 7.796 11.914 7.581 11.395Z'/%3E%3C/svg%3E
```

### Sprite

```html
<!-- Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle
     Every icon of this style in one file: https://gentleface.com/sprite/line-round.svg
     Serve it from your own origin: <use> does not load from another origin. -->
<svg width="16" height="16" aria-hidden="true"><use href="/sprite/line-round.svg#angle"/></svg>
```

### SwiftUI

```swift
// Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle
import SwiftUI

struct AngleIcon: Shape {
    func path(in rect: CGRect) -> Path {
        var p = Path()
        p.move(to: CGPoint(x: 7.436, y: 9.271))
        p.addCurve(to: CGPoint(x: 8.505, y: 11.013), control1: CGPoint(x: 7.883, y: 9.791), control2: CGPoint(x: 8.24, y: 10.371))
        p.addCurve(to: CGPoint(x: 8.981, y: 13), control1: CGPoint(x: 8.771, y: 11.654), control2: CGPoint(x: 8.929, y: 12.316))
        p.addLine(to: CGPoint(x: 13.5, y: 13))
        p.addCurve(to: CGPoint(x: 13.856, y: 13.144), control1: CGPoint(x: 13.641, y: 13), control2: CGPoint(x: 13.759, y: 13.048))
        p.addCurve(to: CGPoint(x: 14, y: 13.5), control1: CGPoint(x: 13.952, y: 13.241), control2: CGPoint(x: 14, y: 13.359))
        p.addCurve(to: CGPoint(x: 13.856, y: 13.856), control1: CGPoint(x: 14, y: 13.641), control2: CGPoint(x: 13.952, y: 13.759))
        p.addCurve(to: CGPoint(x: 13.5, y: 14), control1: CGPoint(x: 13.759, y: 13.952), control2: CGPoint(x: 13.641, y: 14))
        p.addLine(to: CGPoint(x: 2.5, y: 14))
        p.addCurve(to: CGPoint(x: 2.146, y: 13.854), control1: CGPoint(x: 2.362, y: 14), control2: CGPoint(x: 2.244, y: 13.951))
        p.addCurve(to: CGPoint(x: 1.997, y: 13.5), control1: CGPoint(x: 2.047, y: 13.754), control2: CGPoint(x: 1.997, y: 13.636))
        p.addCurve(to: CGPoint(x: 2.146, y: 13.146), control1: CGPoint(x: 1.997, y: 13.364), control2: CGPoint(x: 2.047, y: 13.246))
        p.addLine(to: CGPoint(x: 13.146, y: 2.146))
        p.addCurve(to: CGPoint(x: 13.5, y: 1.997), control1: CGPoint(x: 13.246, y: 2.047), control2: CGPoint(x: 13.364, y: 1.997))
        p.addCurve(to: CGPoint(x: 13.854, y: 2.146), control1: CGPoint(x: 13.636, y: 1.997), control2: CGPoint(x: 13.754, y: 2.047))
        p.addCurve(to: CGPoint(x: 14, y: 2.5), control1: CGPoint(x: 13.951, y: 2.244), control2: CGPoint(x: 14, y: 2.362))
        p.addCurve(to: CGPoint(x: 13.854, y: 2.854), control1: CGPoint(x: 14, y: 2.638), control2: CGPoint(x: 13.951, y: 2.756))
        p.addLine(to: CGPoint(x: 7.436, y: 9.271))
        p.closeSubpath()
        p.move(to: CGPoint(x: 7.581, y: 11.395))
        p.addCurve(to: CGPoint(x: 6.727, y: 9.98), control1: CGPoint(x: 7.367, y: 10.877), control2: CGPoint(x: 7.082, y: 10.405))
        p.addLine(to: CGPoint(x: 3.707, y: 13))
        p.addLine(to: CGPoint(x: 7.978, y: 13))
        p.addCurve(to: CGPoint(x: 7.581, y: 11.395), control1: CGPoint(x: 7.928, y: 12.449), control2: CGPoint(x: 7.796, y: 11.914))
        p.closeSubpath()
        return p.applying(CGAffineTransform(scaleX: rect.width / 16, y: rect.height / 16))
    }
}

// AngleIcon().frame(width: 16, height: 16) fills with the foreground style. Keep it on whole points to stay crisp.
```

### Compose

```kotlin
// Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.addPathNodes
import androidx.compose.ui.unit.dp

val AngleIcon: ImageVector by lazy {
    ImageVector.Builder(
        name = "angle", defaultWidth = 16.dp, defaultHeight = 16.dp,
        viewportWidth = 16f, viewportHeight = 16f,
    ).addPath(
        pathData = addPathNodes("M7.436 9.271C7.883 9.791 8.24 10.371 8.505 11.013C8.771 11.654 8.929 12.316 8.981 13L13.5 13C13.641 13 13.759 13.048 13.856 13.144C13.952 13.241 14 13.359 14 13.5C14 13.641 13.952 13.759 13.856 13.856C13.759 13.952 13.641 14 13.5 14L2.5 14C2.362 14 2.244 13.951 2.146 13.854C2.047 13.754 1.997 13.636 1.997 13.5C1.997 13.364 2.047 13.246 2.146 13.146L13.146 2.146C13.246 2.047 13.364 1.997 13.5 1.997C13.636 1.997 13.754 2.047 13.854 2.146C13.951 2.244 14 2.362 14 2.5C14 2.638 13.951 2.756 13.854 2.854L7.436 9.271ZM7.581 11.395C7.367 10.877 7.082 10.405 6.727 9.98L3.707 13L7.978 13C7.928 12.449 7.796 11.914 7.581 11.395Z"),
        fill = SolidColor(Color.Black),
    ).build()
}

// Icon(AngleIcon, contentDescription = null) tints it with LocalContentColor.
```

### Android XML

```xml
<!-- res/drawable/ic_angle.xml · Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="16dp"
    android:height="16dp"
    android:viewportWidth="16"
    android:viewportHeight="16"
    android:tint="?attr/colorControlNormal">
  <path
      android:fillColor="@android:color/white"
      android:pathData="M7.436 9.271C7.883 9.791 8.24 10.371 8.505 11.013C8.771 11.654 8.929 12.316 8.981 13L13.5 13C13.641 13 13.759 13.048 13.856 13.144C13.952 13.241 14 13.359 14 13.5C14 13.641 13.952 13.759 13.856 13.856C13.759 13.952 13.641 14 13.5 14L2.5 14C2.362 14 2.244 13.951 2.146 13.854C2.047 13.754 1.997 13.636 1.997 13.5C1.997 13.364 2.047 13.246 2.146 13.146L13.146 2.146C13.246 2.047 13.364 1.997 13.5 1.997C13.636 1.997 13.754 2.047 13.854 2.146C13.951 2.244 14 2.362 14 2.5C14 2.638 13.951 2.756 13.854 2.854L7.436 9.271ZM7.581 11.395C7.367 10.877 7.082 10.405 6.727 9.98L3.707 13L7.978 13C7.928 12.449 7.796 11.914 7.581 11.395Z"/>
</vector>
```

### Flutter

```dart
// Gentleface "angle" (line-round), MIT. https://gentleface.com/icons/angle
import 'package:flutter/widgets.dart';

class AngleIcon extends StatelessWidget {
  const AngleIcon({super.key, this.size = 16, this.color});
  final double size;
  final Color? color;

  @override
  Widget build(BuildContext context) => CustomPaint(
        size: Size.square(size),
        painter: _AngleIconPainter(color ?? IconTheme.of(context).color ?? const Color(0xFF000000)),
      );
}

class _AngleIconPainter extends CustomPainter {
  _AngleIconPainter(this.color);
  final Color color;

  @override
  void paint(Canvas canvas, Size size) {
    canvas.scale(size.width / 16, size.height / 16);
    final p = Path()
      ..moveTo(7.436, 9.271)
      ..cubicTo(7.883, 9.791, 8.24, 10.371, 8.505, 11.013)
      ..cubicTo(8.771, 11.654, 8.929, 12.316, 8.981, 13)
      ..lineTo(13.5, 13)
      ..cubicTo(13.641, 13, 13.759, 13.048, 13.856, 13.144)
      ..cubicTo(13.952, 13.241, 14, 13.359, 14, 13.5)
      ..cubicTo(14, 13.641, 13.952, 13.759, 13.856, 13.856)
      ..cubicTo(13.759, 13.952, 13.641, 14, 13.5, 14)
      ..lineTo(2.5, 14)
      ..cubicTo(2.362, 14, 2.244, 13.951, 2.146, 13.854)
      ..cubicTo(2.047, 13.754, 1.997, 13.636, 1.997, 13.5)
      ..cubicTo(1.997, 13.364, 2.047, 13.246, 2.146, 13.146)
      ..lineTo(13.146, 2.146)
      ..cubicTo(13.246, 2.047, 13.364, 1.997, 13.5, 1.997)
      ..cubicTo(13.636, 1.997, 13.754, 2.047, 13.854, 2.146)
      ..cubicTo(13.951, 2.244, 14, 2.362, 14, 2.5)
      ..cubicTo(14, 2.638, 13.951, 2.756, 13.854, 2.854)
      ..lineTo(7.436, 9.271)
      ..close()
      ..moveTo(7.581, 11.395)
      ..cubicTo(7.367, 10.877, 7.082, 10.405, 6.727, 9.98)
      ..lineTo(3.707, 13)
      ..lineTo(7.978, 13)
      ..cubicTo(7.928, 12.449, 7.796, 11.914, 7.581, 11.395)
      ..close();
    canvas.drawPath(p, Paint()..color = color);
  }

  @override
  bool shouldRepaint(_AngleIconPainter old) => old.color != color;
}
```
