# bezier-curve icon

Bezier curve. Gentleface icon, drawn on the 16 px pixel grid. Free, MIT licensed. Page: https://gentleface.com/icons/bezier-curve

- Category: Design
- Use it for: bezier curve, vector path, anchor points, edit points, edit path
- Tags: bezier, curve, spline, path, vector, anchor, node, pen, draw
- Component name: BezierCurveIcon
- Added: 2026-10-15

## Alternatives

- `pen-tool`: the pen tool that draws a new path

## Also fits

- pen tool: edit the anchor points of an existing path

## 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/bezier-curve.svg · PNG https://gentleface.com/png/line-round/16/bezier-curve.png · https://gentleface.com/png/line-round/32/bezier-curve.png · https://gentleface.com/png/line-round/48/bezier-curve.png
- line-soft: https://gentleface.com/svg/line-soft/16/bezier-curve.svg · PNG https://gentleface.com/png/line-soft/16/bezier-curve.png · https://gentleface.com/png/line-soft/32/bezier-curve.png · https://gentleface.com/png/line-soft/48/bezier-curve.png
- line-sharp: https://gentleface.com/svg/line-sharp/16/bezier-curve.svg · PNG https://gentleface.com/png/line-sharp/16/bezier-curve.png · https://gentleface.com/png/line-sharp/32/bezier-curve.png · https://gentleface.com/png/line-sharp/48/bezier-curve.png
- solid-round: https://gentleface.com/svg/solid-round/16/bezier-curve.svg · PNG https://gentleface.com/png/solid-round/16/bezier-curve.png · https://gentleface.com/png/solid-round/32/bezier-curve.png · https://gentleface.com/png/solid-round/48/bezier-curve.png
- solid-soft: https://gentleface.com/svg/solid-soft/16/bezier-curve.svg · PNG https://gentleface.com/png/solid-soft/16/bezier-curve.png · https://gentleface.com/png/solid-soft/32/bezier-curve.png · https://gentleface.com/png/solid-soft/48/bezier-curve.png
- solid-sharp: https://gentleface.com/svg/solid-sharp/16/bezier-curve.svg · PNG https://gentleface.com/png/solid-sharp/16/bezier-curve.png · https://gentleface.com/png/solid-sharp/32/bezier-curve.png · https://gentleface.com/png/solid-sharp/48/bezier-curve.png

The SVG of every style: https://gentleface.com/icons/bezier-curve.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="M11 5L11 4.133C10.359 4.247 9.735 4.435 9.128 4.697C8.134 5.127 7.255 5.724 6.49 6.49C5.724 7.255 5.127 8.134 4.697 9.128C4.435 9.735 4.247 10.359 4.133 11L5 11L5 14L2 14L2 11L3.118 11C3.242 10.221 3.463 9.465 3.78 8.731C4.259 7.621 4.927 6.638 5.782 5.782C6.638 4.927 7.621 4.259 8.731 3.78C9.465 3.463 10.221 3.242 11 3.118L11 2L14 2L14 5L11 5Z"/></svg>
```

### React

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

export function BezierCurveIcon(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="M11 5L11 4.133C10.359 4.247 9.735 4.435 9.128 4.697C8.134 5.127 7.255 5.724 6.49 6.49C5.724 7.255 5.127 8.134 4.697 9.128C4.435 9.735 4.247 10.359 4.133 11L5 11L5 14L2 14L2 11L3.118 11C3.242 10.221 3.463 9.465 3.78 8.731C4.259 7.621 4.927 6.638 5.782 5.782C6.638 4.927 7.621 4.259 8.731 3.78C9.465 3.463 10.221 3.242 11 3.118L11 2L14 2L14 5L11 5Z" />
    </svg>
  );
}
```

### Vue

```vue
<!-- Gentleface "bezier-curve" (line-round), MIT. https://gentleface.com/icons/bezier-curve -->
<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="M11 5L11 4.133C10.359 4.247 9.735 4.435 9.128 4.697C8.134 5.127 7.255 5.724 6.49 6.49C5.724 7.255 5.127 8.134 4.697 9.128C4.435 9.735 4.247 10.359 4.133 11L5 11L5 14L2 14L2 11L3.118 11C3.242 10.221 3.463 9.465 3.78 8.731C4.259 7.621 4.927 6.638 5.782 5.782C6.638 4.927 7.621 4.259 8.731 3.78C9.465 3.463 10.221 3.242 11 3.118L11 2L14 2L14 5L11 5Z" />
  </svg>
</template>
```

### Svelte

```svelte
<!-- Gentleface "bezier-curve" (line-round), MIT. https://gentleface.com/icons/bezier-curve -->
<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="M11 5L11 4.133C10.359 4.247 9.735 4.435 9.128 4.697C8.134 5.127 7.255 5.724 6.49 6.49C5.724 7.255 5.127 8.134 4.697 9.128C4.435 9.735 4.247 10.359 4.133 11L5 11L5 14L2 14L2 11L3.118 11C3.242 10.221 3.463 9.465 3.78 8.731C4.259 7.621 4.927 6.638 5.782 5.782C6.638 4.927 7.621 4.259 8.731 3.78C9.465 3.463 10.221 3.242 11 3.118L11 2L14 2L14 5L11 5Z" />
</svg>
```

### HTML img

```html
<!-- Gentleface "bezier-curve" (line-round), MIT. https://gentleface.com/icons/bezier-curve. 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/bezier-curve.svg" width="16" height="16" alt="">
```

### CSS

```css
/* Gentleface "bezier-curve" (line-round), MIT. https://gentleface.com/icons/bezier-curve. Takes the text color. */
.icon-bezier-curve {
  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='M11 5L11 4.133C10.359 4.247 9.735 4.435 9.128 4.697C8.134 5.127 7.255 5.724 6.49 6.49C5.724 7.255 5.127 8.134 4.697 9.128C4.435 9.735 4.247 10.359 4.133 11L5 11L5 14L2 14L2 11L3.118 11C3.242 10.221 3.463 9.465 3.78 8.731C4.259 7.621 4.927 6.638 5.782 5.782C6.638 4.927 7.621 4.259 8.731 3.78C9.465 3.463 10.221 3.242 11 3.118L11 2L14 2L14 5L11 5Z'/%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='M11 5L11 4.133C10.359 4.247 9.735 4.435 9.128 4.697C8.134 5.127 7.255 5.724 6.49 6.49C5.724 7.255 5.127 8.134 4.697 9.128C4.435 9.735 4.247 10.359 4.133 11L5 11L5 14L2 14L2 11L3.118 11C3.242 10.221 3.463 9.465 3.78 8.731C4.259 7.621 4.927 6.638 5.782 5.782C6.638 4.927 7.621 4.259 8.731 3.78C9.465 3.463 10.221 3.242 11 3.118L11 2L14 2L14 5L11 5Z'/%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='M11 5L11 4.133C10.359 4.247 9.735 4.435 9.128 4.697C8.134 5.127 7.255 5.724 6.49 6.49C5.724 7.255 5.127 8.134 4.697 9.128C4.435 9.735 4.247 10.359 4.133 11L5 11L5 14L2 14L2 11L3.118 11C3.242 10.221 3.463 9.465 3.78 8.731C4.259 7.621 4.927 6.638 5.782 5.782C6.638 4.927 7.621 4.259 8.731 3.78C9.465 3.463 10.221 3.242 11 3.118L11 2L14 2L14 5L11 5Z'/%3E%3C/svg%3E
```

### Sprite

```html
<!-- Gentleface "bezier-curve" (line-round), MIT. https://gentleface.com/icons/bezier-curve
     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#bezier-curve"/></svg>
```

### SwiftUI

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

struct BezierCurveIcon: Shape {
    func path(in rect: CGRect) -> Path {
        var p = Path()
        p.move(to: CGPoint(x: 11, y: 5))
        p.addLine(to: CGPoint(x: 11, y: 4.133))
        p.addCurve(to: CGPoint(x: 9.128, y: 4.697), control1: CGPoint(x: 10.359, y: 4.247), control2: CGPoint(x: 9.735, y: 4.435))
        p.addCurve(to: CGPoint(x: 6.49, y: 6.49), control1: CGPoint(x: 8.134, y: 5.127), control2: CGPoint(x: 7.255, y: 5.724))
        p.addCurve(to: CGPoint(x: 4.697, y: 9.128), control1: CGPoint(x: 5.724, y: 7.255), control2: CGPoint(x: 5.127, y: 8.134))
        p.addCurve(to: CGPoint(x: 4.133, y: 11), control1: CGPoint(x: 4.435, y: 9.735), control2: CGPoint(x: 4.247, y: 10.359))
        p.addLine(to: CGPoint(x: 5, y: 11))
        p.addLine(to: CGPoint(x: 5, y: 14))
        p.addLine(to: CGPoint(x: 2, y: 14))
        p.addLine(to: CGPoint(x: 2, y: 11))
        p.addLine(to: CGPoint(x: 3.118, y: 11))
        p.addCurve(to: CGPoint(x: 3.78, y: 8.731), control1: CGPoint(x: 3.242, y: 10.221), control2: CGPoint(x: 3.463, y: 9.465))
        p.addCurve(to: CGPoint(x: 5.782, y: 5.782), control1: CGPoint(x: 4.259, y: 7.621), control2: CGPoint(x: 4.927, y: 6.638))
        p.addCurve(to: CGPoint(x: 8.731, y: 3.78), control1: CGPoint(x: 6.638, y: 4.927), control2: CGPoint(x: 7.621, y: 4.259))
        p.addCurve(to: CGPoint(x: 11, y: 3.118), control1: CGPoint(x: 9.465, y: 3.463), control2: CGPoint(x: 10.221, y: 3.242))
        p.addLine(to: CGPoint(x: 11, y: 2))
        p.addLine(to: CGPoint(x: 14, y: 2))
        p.addLine(to: CGPoint(x: 14, y: 5))
        p.addLine(to: CGPoint(x: 11, y: 5))
        p.closeSubpath()
        return p.applying(CGAffineTransform(scaleX: rect.width / 16, y: rect.height / 16))
    }
}

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

### Compose

```kotlin
// Gentleface "bezier-curve" (line-round), MIT. https://gentleface.com/icons/bezier-curve
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 BezierCurveIcon: ImageVector by lazy {
    ImageVector.Builder(
        name = "bezier-curve", defaultWidth = 16.dp, defaultHeight = 16.dp,
        viewportWidth = 16f, viewportHeight = 16f,
    ).addPath(
        pathData = addPathNodes("M11 5L11 4.133C10.359 4.247 9.735 4.435 9.128 4.697C8.134 5.127 7.255 5.724 6.49 6.49C5.724 7.255 5.127 8.134 4.697 9.128C4.435 9.735 4.247 10.359 4.133 11L5 11L5 14L2 14L2 11L3.118 11C3.242 10.221 3.463 9.465 3.78 8.731C4.259 7.621 4.927 6.638 5.782 5.782C6.638 4.927 7.621 4.259 8.731 3.78C9.465 3.463 10.221 3.242 11 3.118L11 2L14 2L14 5L11 5Z"),
        fill = SolidColor(Color.Black),
    ).build()
}

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

### Android XML

```xml
<!-- res/drawable/ic_bezier_curve.xml · Gentleface "bezier-curve" (line-round), MIT. https://gentleface.com/icons/bezier-curve -->
<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="M11 5L11 4.133C10.359 4.247 9.735 4.435 9.128 4.697C8.134 5.127 7.255 5.724 6.49 6.49C5.724 7.255 5.127 8.134 4.697 9.128C4.435 9.735 4.247 10.359 4.133 11L5 11L5 14L2 14L2 11L3.118 11C3.242 10.221 3.463 9.465 3.78 8.731C4.259 7.621 4.927 6.638 5.782 5.782C6.638 4.927 7.621 4.259 8.731 3.78C9.465 3.463 10.221 3.242 11 3.118L11 2L14 2L14 5L11 5Z"/>
</vector>
```

### Flutter

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

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

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

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

  @override
  void paint(Canvas canvas, Size size) {
    canvas.scale(size.width / 16, size.height / 16);
    final p = Path()
      ..moveTo(11, 5)
      ..lineTo(11, 4.133)
      ..cubicTo(10.359, 4.247, 9.735, 4.435, 9.128, 4.697)
      ..cubicTo(8.134, 5.127, 7.255, 5.724, 6.49, 6.49)
      ..cubicTo(5.724, 7.255, 5.127, 8.134, 4.697, 9.128)
      ..cubicTo(4.435, 9.735, 4.247, 10.359, 4.133, 11)
      ..lineTo(5, 11)
      ..lineTo(5, 14)
      ..lineTo(2, 14)
      ..lineTo(2, 11)
      ..lineTo(3.118, 11)
      ..cubicTo(3.242, 10.221, 3.463, 9.465, 3.78, 8.731)
      ..cubicTo(4.259, 7.621, 4.927, 6.638, 5.782, 5.782)
      ..cubicTo(6.638, 4.927, 7.621, 4.259, 8.731, 3.78)
      ..cubicTo(9.465, 3.463, 10.221, 3.242, 11, 3.118)
      ..lineTo(11, 2)
      ..lineTo(14, 2)
      ..lineTo(14, 5)
      ..lineTo(11, 5)
      ..close();
    canvas.drawPath(p, Paint()..color = color);
  }

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