# server icon

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

- Category: Development
- Use it for: server, hosting, backend, rack, server rack, web server
- Tags: hardware, rack, hosting, backend, infrastructure, datacenter
- Family: server-alert, server-check, server-gear, server-link, server-off, server-plus, server-shield, server-x
- Component name: ServerIcon
- Added: 2026-10-14

## Alternatives

- `servers`: several servers (server-cluster)
- `database`: a data store (data-store)
- `cloud`: cloud hosting or storage (cloud)

## Also fits

- database: the host or backend (server)
- environments: one server or host (server)
- desktop tower: a server or a rack (server)
- nas: a server or a rack (server)

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

The SVG of every style: https://gentleface.com/icons/server.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="M14.707 2.293C14.902 2.488 15 2.724 15 3L15 6C15 6.276 14.902 6.512 14.707 6.707C14.512 6.902 14.276 7 14 7L2 7C1.724 7 1.488 6.902 1.293 6.707C1.098 6.512 1 6.276 1 6L1 3C1 2.724 1.098 2.488 1.293 2.293C1.488 2.098 1.724 2 2 2L14 2C14.276 2 14.512 2.098 14.707 2.293ZM2 6L14 6L14 3L2 3L2 6ZM4.5 4C4.641 4 4.759 4.048 4.856 4.144C4.952 4.241 5 4.359 5 4.5C5 4.641 4.952 4.759 4.856 4.856C4.759 4.952 4.641 5 4.5 5L3.5 5C3.359 5 3.241 4.952 3.144 4.856C3.048 4.759 3 4.641 3 4.5C3 4.359 3.048 4.241 3.144 4.144C3.241 4.048 3.359 4 3.5 4L4.5 4ZM14 14L2 14C1.724 14 1.488 13.902 1.293 13.707C1.098 13.512 1 13.276 1 13L1 10C1 9.724 1.098 9.488 1.293 9.293C1.488 9.098 1.724 9 2 9L14 9C14.276 9 14.512 9.098 14.707 9.293C14.902 9.488 15 9.724 15 10L15 13C15 13.276 14.902 13.512 14.707 13.707C14.512 13.902 14.276 14 14 14ZM14 13L14 10L2 10L2 13L14 13ZM4.5 11C4.641 11 4.759 11.048 4.856 11.144C4.952 11.241 5 11.359 5 11.5C5 11.641 4.952 11.759 4.856 11.856C4.759 11.952 4.641 12 4.5 12L3.5 12C3.359 12 3.241 11.952 3.144 11.856C3.048 11.759 3 11.641 3 11.5C3 11.359 3.048 11.241 3.144 11.144C3.241 11.048 3.359 11 3.5 11L4.5 11Z"/></svg>
```

### React

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

export function ServerIcon(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="M14.707 2.293C14.902 2.488 15 2.724 15 3L15 6C15 6.276 14.902 6.512 14.707 6.707C14.512 6.902 14.276 7 14 7L2 7C1.724 7 1.488 6.902 1.293 6.707C1.098 6.512 1 6.276 1 6L1 3C1 2.724 1.098 2.488 1.293 2.293C1.488 2.098 1.724 2 2 2L14 2C14.276 2 14.512 2.098 14.707 2.293ZM2 6L14 6L14 3L2 3L2 6ZM4.5 4C4.641 4 4.759 4.048 4.856 4.144C4.952 4.241 5 4.359 5 4.5C5 4.641 4.952 4.759 4.856 4.856C4.759 4.952 4.641 5 4.5 5L3.5 5C3.359 5 3.241 4.952 3.144 4.856C3.048 4.759 3 4.641 3 4.5C3 4.359 3.048 4.241 3.144 4.144C3.241 4.048 3.359 4 3.5 4L4.5 4ZM14 14L2 14C1.724 14 1.488 13.902 1.293 13.707C1.098 13.512 1 13.276 1 13L1 10C1 9.724 1.098 9.488 1.293 9.293C1.488 9.098 1.724 9 2 9L14 9C14.276 9 14.512 9.098 14.707 9.293C14.902 9.488 15 9.724 15 10L15 13C15 13.276 14.902 13.512 14.707 13.707C14.512 13.902 14.276 14 14 14ZM14 13L14 10L2 10L2 13L14 13ZM4.5 11C4.641 11 4.759 11.048 4.856 11.144C4.952 11.241 5 11.359 5 11.5C5 11.641 4.952 11.759 4.856 11.856C4.759 11.952 4.641 12 4.5 12L3.5 12C3.359 12 3.241 11.952 3.144 11.856C3.048 11.759 3 11.641 3 11.5C3 11.359 3.048 11.241 3.144 11.144C3.241 11.048 3.359 11 3.5 11L4.5 11Z" />
    </svg>
  );
}
```

### Vue

```vue
<!-- Gentleface "server" (line-round), MIT. https://gentleface.com/icons/server -->
<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="M14.707 2.293C14.902 2.488 15 2.724 15 3L15 6C15 6.276 14.902 6.512 14.707 6.707C14.512 6.902 14.276 7 14 7L2 7C1.724 7 1.488 6.902 1.293 6.707C1.098 6.512 1 6.276 1 6L1 3C1 2.724 1.098 2.488 1.293 2.293C1.488 2.098 1.724 2 2 2L14 2C14.276 2 14.512 2.098 14.707 2.293ZM2 6L14 6L14 3L2 3L2 6ZM4.5 4C4.641 4 4.759 4.048 4.856 4.144C4.952 4.241 5 4.359 5 4.5C5 4.641 4.952 4.759 4.856 4.856C4.759 4.952 4.641 5 4.5 5L3.5 5C3.359 5 3.241 4.952 3.144 4.856C3.048 4.759 3 4.641 3 4.5C3 4.359 3.048 4.241 3.144 4.144C3.241 4.048 3.359 4 3.5 4L4.5 4ZM14 14L2 14C1.724 14 1.488 13.902 1.293 13.707C1.098 13.512 1 13.276 1 13L1 10C1 9.724 1.098 9.488 1.293 9.293C1.488 9.098 1.724 9 2 9L14 9C14.276 9 14.512 9.098 14.707 9.293C14.902 9.488 15 9.724 15 10L15 13C15 13.276 14.902 13.512 14.707 13.707C14.512 13.902 14.276 14 14 14ZM14 13L14 10L2 10L2 13L14 13ZM4.5 11C4.641 11 4.759 11.048 4.856 11.144C4.952 11.241 5 11.359 5 11.5C5 11.641 4.952 11.759 4.856 11.856C4.759 11.952 4.641 12 4.5 12L3.5 12C3.359 12 3.241 11.952 3.144 11.856C3.048 11.759 3 11.641 3 11.5C3 11.359 3.048 11.241 3.144 11.144C3.241 11.048 3.359 11 3.5 11L4.5 11Z" />
  </svg>
</template>
```

### Svelte

```svelte
<!-- Gentleface "server" (line-round), MIT. https://gentleface.com/icons/server -->
<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="M14.707 2.293C14.902 2.488 15 2.724 15 3L15 6C15 6.276 14.902 6.512 14.707 6.707C14.512 6.902 14.276 7 14 7L2 7C1.724 7 1.488 6.902 1.293 6.707C1.098 6.512 1 6.276 1 6L1 3C1 2.724 1.098 2.488 1.293 2.293C1.488 2.098 1.724 2 2 2L14 2C14.276 2 14.512 2.098 14.707 2.293ZM2 6L14 6L14 3L2 3L2 6ZM4.5 4C4.641 4 4.759 4.048 4.856 4.144C4.952 4.241 5 4.359 5 4.5C5 4.641 4.952 4.759 4.856 4.856C4.759 4.952 4.641 5 4.5 5L3.5 5C3.359 5 3.241 4.952 3.144 4.856C3.048 4.759 3 4.641 3 4.5C3 4.359 3.048 4.241 3.144 4.144C3.241 4.048 3.359 4 3.5 4L4.5 4ZM14 14L2 14C1.724 14 1.488 13.902 1.293 13.707C1.098 13.512 1 13.276 1 13L1 10C1 9.724 1.098 9.488 1.293 9.293C1.488 9.098 1.724 9 2 9L14 9C14.276 9 14.512 9.098 14.707 9.293C14.902 9.488 15 9.724 15 10L15 13C15 13.276 14.902 13.512 14.707 13.707C14.512 13.902 14.276 14 14 14ZM14 13L14 10L2 10L2 13L14 13ZM4.5 11C4.641 11 4.759 11.048 4.856 11.144C4.952 11.241 5 11.359 5 11.5C5 11.641 4.952 11.759 4.856 11.856C4.759 11.952 4.641 12 4.5 12L3.5 12C3.359 12 3.241 11.952 3.144 11.856C3.048 11.759 3 11.641 3 11.5C3 11.359 3.048 11.241 3.144 11.144C3.241 11.048 3.359 11 3.5 11L4.5 11Z" />
</svg>
```

### HTML img

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

### CSS

```css
/* Gentleface "server" (line-round), MIT. https://gentleface.com/icons/server. Takes the text color. */
.icon-server {
  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='M14.707 2.293C14.902 2.488 15 2.724 15 3L15 6C15 6.276 14.902 6.512 14.707 6.707C14.512 6.902 14.276 7 14 7L2 7C1.724 7 1.488 6.902 1.293 6.707C1.098 6.512 1 6.276 1 6L1 3C1 2.724 1.098 2.488 1.293 2.293C1.488 2.098 1.724 2 2 2L14 2C14.276 2 14.512 2.098 14.707 2.293ZM2 6L14 6L14 3L2 3L2 6ZM4.5 4C4.641 4 4.759 4.048 4.856 4.144C4.952 4.241 5 4.359 5 4.5C5 4.641 4.952 4.759 4.856 4.856C4.759 4.952 4.641 5 4.5 5L3.5 5C3.359 5 3.241 4.952 3.144 4.856C3.048 4.759 3 4.641 3 4.5C3 4.359 3.048 4.241 3.144 4.144C3.241 4.048 3.359 4 3.5 4L4.5 4ZM14 14L2 14C1.724 14 1.488 13.902 1.293 13.707C1.098 13.512 1 13.276 1 13L1 10C1 9.724 1.098 9.488 1.293 9.293C1.488 9.098 1.724 9 2 9L14 9C14.276 9 14.512 9.098 14.707 9.293C14.902 9.488 15 9.724 15 10L15 13C15 13.276 14.902 13.512 14.707 13.707C14.512 13.902 14.276 14 14 14ZM14 13L14 10L2 10L2 13L14 13ZM4.5 11C4.641 11 4.759 11.048 4.856 11.144C4.952 11.241 5 11.359 5 11.5C5 11.641 4.952 11.759 4.856 11.856C4.759 11.952 4.641 12 4.5 12L3.5 12C3.359 12 3.241 11.952 3.144 11.856C3.048 11.759 3 11.641 3 11.5C3 11.359 3.048 11.241 3.144 11.144C3.241 11.048 3.359 11 3.5 11L4.5 11Z'/%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='M14.707 2.293C14.902 2.488 15 2.724 15 3L15 6C15 6.276 14.902 6.512 14.707 6.707C14.512 6.902 14.276 7 14 7L2 7C1.724 7 1.488 6.902 1.293 6.707C1.098 6.512 1 6.276 1 6L1 3C1 2.724 1.098 2.488 1.293 2.293C1.488 2.098 1.724 2 2 2L14 2C14.276 2 14.512 2.098 14.707 2.293ZM2 6L14 6L14 3L2 3L2 6ZM4.5 4C4.641 4 4.759 4.048 4.856 4.144C4.952 4.241 5 4.359 5 4.5C5 4.641 4.952 4.759 4.856 4.856C4.759 4.952 4.641 5 4.5 5L3.5 5C3.359 5 3.241 4.952 3.144 4.856C3.048 4.759 3 4.641 3 4.5C3 4.359 3.048 4.241 3.144 4.144C3.241 4.048 3.359 4 3.5 4L4.5 4ZM14 14L2 14C1.724 14 1.488 13.902 1.293 13.707C1.098 13.512 1 13.276 1 13L1 10C1 9.724 1.098 9.488 1.293 9.293C1.488 9.098 1.724 9 2 9L14 9C14.276 9 14.512 9.098 14.707 9.293C14.902 9.488 15 9.724 15 10L15 13C15 13.276 14.902 13.512 14.707 13.707C14.512 13.902 14.276 14 14 14ZM14 13L14 10L2 10L2 13L14 13ZM4.5 11C4.641 11 4.759 11.048 4.856 11.144C4.952 11.241 5 11.359 5 11.5C5 11.641 4.952 11.759 4.856 11.856C4.759 11.952 4.641 12 4.5 12L3.5 12C3.359 12 3.241 11.952 3.144 11.856C3.048 11.759 3 11.641 3 11.5C3 11.359 3.048 11.241 3.144 11.144C3.241 11.048 3.359 11 3.5 11L4.5 11Z'/%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='M14.707 2.293C14.902 2.488 15 2.724 15 3L15 6C15 6.276 14.902 6.512 14.707 6.707C14.512 6.902 14.276 7 14 7L2 7C1.724 7 1.488 6.902 1.293 6.707C1.098 6.512 1 6.276 1 6L1 3C1 2.724 1.098 2.488 1.293 2.293C1.488 2.098 1.724 2 2 2L14 2C14.276 2 14.512 2.098 14.707 2.293ZM2 6L14 6L14 3L2 3L2 6ZM4.5 4C4.641 4 4.759 4.048 4.856 4.144C4.952 4.241 5 4.359 5 4.5C5 4.641 4.952 4.759 4.856 4.856C4.759 4.952 4.641 5 4.5 5L3.5 5C3.359 5 3.241 4.952 3.144 4.856C3.048 4.759 3 4.641 3 4.5C3 4.359 3.048 4.241 3.144 4.144C3.241 4.048 3.359 4 3.5 4L4.5 4ZM14 14L2 14C1.724 14 1.488 13.902 1.293 13.707C1.098 13.512 1 13.276 1 13L1 10C1 9.724 1.098 9.488 1.293 9.293C1.488 9.098 1.724 9 2 9L14 9C14.276 9 14.512 9.098 14.707 9.293C14.902 9.488 15 9.724 15 10L15 13C15 13.276 14.902 13.512 14.707 13.707C14.512 13.902 14.276 14 14 14ZM14 13L14 10L2 10L2 13L14 13ZM4.5 11C4.641 11 4.759 11.048 4.856 11.144C4.952 11.241 5 11.359 5 11.5C5 11.641 4.952 11.759 4.856 11.856C4.759 11.952 4.641 12 4.5 12L3.5 12C3.359 12 3.241 11.952 3.144 11.856C3.048 11.759 3 11.641 3 11.5C3 11.359 3.048 11.241 3.144 11.144C3.241 11.048 3.359 11 3.5 11L4.5 11Z'/%3E%3C/svg%3E
```

### Sprite

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

### SwiftUI

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

struct ServerIcon: Shape {
    func path(in rect: CGRect) -> Path {
        var p = Path()
        p.move(to: CGPoint(x: 14.707, y: 2.293))
        p.addCurve(to: CGPoint(x: 15, y: 3), control1: CGPoint(x: 14.902, y: 2.488), control2: CGPoint(x: 15, y: 2.724))
        p.addLine(to: CGPoint(x: 15, y: 6))
        p.addCurve(to: CGPoint(x: 14.707, y: 6.707), control1: CGPoint(x: 15, y: 6.276), control2: CGPoint(x: 14.902, y: 6.512))
        p.addCurve(to: CGPoint(x: 14, y: 7), control1: CGPoint(x: 14.512, y: 6.902), control2: CGPoint(x: 14.276, y: 7))
        p.addLine(to: CGPoint(x: 2, y: 7))
        p.addCurve(to: CGPoint(x: 1.293, y: 6.707), control1: CGPoint(x: 1.724, y: 7), control2: CGPoint(x: 1.488, y: 6.902))
        p.addCurve(to: CGPoint(x: 1, y: 6), control1: CGPoint(x: 1.098, y: 6.512), control2: CGPoint(x: 1, y: 6.276))
        p.addLine(to: CGPoint(x: 1, y: 3))
        p.addCurve(to: CGPoint(x: 1.293, y: 2.293), control1: CGPoint(x: 1, y: 2.724), control2: CGPoint(x: 1.098, y: 2.488))
        p.addCurve(to: CGPoint(x: 2, y: 2), control1: CGPoint(x: 1.488, y: 2.098), control2: CGPoint(x: 1.724, y: 2))
        p.addLine(to: CGPoint(x: 14, y: 2))
        p.addCurve(to: CGPoint(x: 14.707, y: 2.293), control1: CGPoint(x: 14.276, y: 2), control2: CGPoint(x: 14.512, y: 2.098))
        p.closeSubpath()
        p.move(to: CGPoint(x: 2, y: 6))
        p.addLine(to: CGPoint(x: 14, y: 6))
        p.addLine(to: CGPoint(x: 14, y: 3))
        p.addLine(to: CGPoint(x: 2, y: 3))
        p.addLine(to: CGPoint(x: 2, y: 6))
        p.closeSubpath()
        p.move(to: CGPoint(x: 4.5, y: 4))
        p.addCurve(to: CGPoint(x: 4.856, y: 4.144), control1: CGPoint(x: 4.641, y: 4), control2: CGPoint(x: 4.759, y: 4.048))
        p.addCurve(to: CGPoint(x: 5, y: 4.5), control1: CGPoint(x: 4.952, y: 4.241), control2: CGPoint(x: 5, y: 4.359))
        p.addCurve(to: CGPoint(x: 4.856, y: 4.856), control1: CGPoint(x: 5, y: 4.641), control2: CGPoint(x: 4.952, y: 4.759))
        p.addCurve(to: CGPoint(x: 4.5, y: 5), control1: CGPoint(x: 4.759, y: 4.952), control2: CGPoint(x: 4.641, y: 5))
        p.addLine(to: CGPoint(x: 3.5, y: 5))
        p.addCurve(to: CGPoint(x: 3.144, y: 4.856), control1: CGPoint(x: 3.359, y: 5), control2: CGPoint(x: 3.241, y: 4.952))
        p.addCurve(to: CGPoint(x: 3, y: 4.5), control1: CGPoint(x: 3.048, y: 4.759), control2: CGPoint(x: 3, y: 4.641))
        p.addCurve(to: CGPoint(x: 3.144, y: 4.144), control1: CGPoint(x: 3, y: 4.359), control2: CGPoint(x: 3.048, y: 4.241))
        p.addCurve(to: CGPoint(x: 3.5, y: 4), control1: CGPoint(x: 3.241, y: 4.048), control2: CGPoint(x: 3.359, y: 4))
        p.addLine(to: CGPoint(x: 4.5, y: 4))
        p.closeSubpath()
        p.move(to: CGPoint(x: 14, y: 14))
        p.addLine(to: CGPoint(x: 2, y: 14))
        p.addCurve(to: CGPoint(x: 1.293, y: 13.707), control1: CGPoint(x: 1.724, y: 14), control2: CGPoint(x: 1.488, y: 13.902))
        p.addCurve(to: CGPoint(x: 1, y: 13), control1: CGPoint(x: 1.098, y: 13.512), control2: CGPoint(x: 1, y: 13.276))
        p.addLine(to: CGPoint(x: 1, y: 10))
        p.addCurve(to: CGPoint(x: 1.293, y: 9.293), control1: CGPoint(x: 1, y: 9.724), control2: CGPoint(x: 1.098, y: 9.488))
        p.addCurve(to: CGPoint(x: 2, y: 9), control1: CGPoint(x: 1.488, y: 9.098), control2: CGPoint(x: 1.724, y: 9))
        p.addLine(to: CGPoint(x: 14, y: 9))
        p.addCurve(to: CGPoint(x: 14.707, y: 9.293), control1: CGPoint(x: 14.276, y: 9), control2: CGPoint(x: 14.512, y: 9.098))
        p.addCurve(to: CGPoint(x: 15, y: 10), control1: CGPoint(x: 14.902, y: 9.488), control2: CGPoint(x: 15, y: 9.724))
        p.addLine(to: CGPoint(x: 15, y: 13))
        p.addCurve(to: CGPoint(x: 14.707, y: 13.707), control1: CGPoint(x: 15, y: 13.276), control2: CGPoint(x: 14.902, y: 13.512))
        p.addCurve(to: CGPoint(x: 14, y: 14), control1: CGPoint(x: 14.512, y: 13.902), control2: CGPoint(x: 14.276, y: 14))
        p.closeSubpath()
        p.move(to: CGPoint(x: 14, y: 13))
        p.addLine(to: CGPoint(x: 14, y: 10))
        p.addLine(to: CGPoint(x: 2, y: 10))
        p.addLine(to: CGPoint(x: 2, y: 13))
        p.addLine(to: CGPoint(x: 14, y: 13))
        p.closeSubpath()
        p.move(to: CGPoint(x: 4.5, y: 11))
        p.addCurve(to: CGPoint(x: 4.856, y: 11.144), control1: CGPoint(x: 4.641, y: 11), control2: CGPoint(x: 4.759, y: 11.048))
        p.addCurve(to: CGPoint(x: 5, y: 11.5), control1: CGPoint(x: 4.952, y: 11.241), control2: CGPoint(x: 5, y: 11.359))
        p.addCurve(to: CGPoint(x: 4.856, y: 11.856), control1: CGPoint(x: 5, y: 11.641), control2: CGPoint(x: 4.952, y: 11.759))
        p.addCurve(to: CGPoint(x: 4.5, y: 12), control1: CGPoint(x: 4.759, y: 11.952), control2: CGPoint(x: 4.641, y: 12))
        p.addLine(to: CGPoint(x: 3.5, y: 12))
        p.addCurve(to: CGPoint(x: 3.144, y: 11.856), control1: CGPoint(x: 3.359, y: 12), control2: CGPoint(x: 3.241, y: 11.952))
        p.addCurve(to: CGPoint(x: 3, y: 11.5), control1: CGPoint(x: 3.048, y: 11.759), control2: CGPoint(x: 3, y: 11.641))
        p.addCurve(to: CGPoint(x: 3.144, y: 11.144), control1: CGPoint(x: 3, y: 11.359), control2: CGPoint(x: 3.048, y: 11.241))
        p.addCurve(to: CGPoint(x: 3.5, y: 11), control1: CGPoint(x: 3.241, y: 11.048), control2: CGPoint(x: 3.359, y: 11))
        p.addLine(to: CGPoint(x: 4.5, y: 11))
        p.closeSubpath()
        return p.applying(CGAffineTransform(scaleX: rect.width / 16, y: rect.height / 16))
    }
}

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

### Compose

```kotlin
// Gentleface "server" (line-round), MIT. https://gentleface.com/icons/server
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 ServerIcon: ImageVector by lazy {
    ImageVector.Builder(
        name = "server", defaultWidth = 16.dp, defaultHeight = 16.dp,
        viewportWidth = 16f, viewportHeight = 16f,
    ).addPath(
        pathData = addPathNodes("M14.707 2.293C14.902 2.488 15 2.724 15 3L15 6C15 6.276 14.902 6.512 14.707 6.707C14.512 6.902 14.276 7 14 7L2 7C1.724 7 1.488 6.902 1.293 6.707C1.098 6.512 1 6.276 1 6L1 3C1 2.724 1.098 2.488 1.293 2.293C1.488 2.098 1.724 2 2 2L14 2C14.276 2 14.512 2.098 14.707 2.293ZM2 6L14 6L14 3L2 3L2 6ZM4.5 4C4.641 4 4.759 4.048 4.856 4.144C4.952 4.241 5 4.359 5 4.5C5 4.641 4.952 4.759 4.856 4.856C4.759 4.952 4.641 5 4.5 5L3.5 5C3.359 5 3.241 4.952 3.144 4.856C3.048 4.759 3 4.641 3 4.5C3 4.359 3.048 4.241 3.144 4.144C3.241 4.048 3.359 4 3.5 4L4.5 4ZM14 14L2 14C1.724 14 1.488 13.902 1.293 13.707C1.098 13.512 1 13.276 1 13L1 10C1 9.724 1.098 9.488 1.293 9.293C1.488 9.098 1.724 9 2 9L14 9C14.276 9 14.512 9.098 14.707 9.293C14.902 9.488 15 9.724 15 10L15 13C15 13.276 14.902 13.512 14.707 13.707C14.512 13.902 14.276 14 14 14ZM14 13L14 10L2 10L2 13L14 13ZM4.5 11C4.641 11 4.759 11.048 4.856 11.144C4.952 11.241 5 11.359 5 11.5C5 11.641 4.952 11.759 4.856 11.856C4.759 11.952 4.641 12 4.5 12L3.5 12C3.359 12 3.241 11.952 3.144 11.856C3.048 11.759 3 11.641 3 11.5C3 11.359 3.048 11.241 3.144 11.144C3.241 11.048 3.359 11 3.5 11L4.5 11Z"),
        fill = SolidColor(Color.Black),
    ).build()
}

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

### Android XML

```xml
<!-- res/drawable/ic_server.xml · Gentleface "server" (line-round), MIT. https://gentleface.com/icons/server -->
<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="M14.707 2.293C14.902 2.488 15 2.724 15 3L15 6C15 6.276 14.902 6.512 14.707 6.707C14.512 6.902 14.276 7 14 7L2 7C1.724 7 1.488 6.902 1.293 6.707C1.098 6.512 1 6.276 1 6L1 3C1 2.724 1.098 2.488 1.293 2.293C1.488 2.098 1.724 2 2 2L14 2C14.276 2 14.512 2.098 14.707 2.293ZM2 6L14 6L14 3L2 3L2 6ZM4.5 4C4.641 4 4.759 4.048 4.856 4.144C4.952 4.241 5 4.359 5 4.5C5 4.641 4.952 4.759 4.856 4.856C4.759 4.952 4.641 5 4.5 5L3.5 5C3.359 5 3.241 4.952 3.144 4.856C3.048 4.759 3 4.641 3 4.5C3 4.359 3.048 4.241 3.144 4.144C3.241 4.048 3.359 4 3.5 4L4.5 4ZM14 14L2 14C1.724 14 1.488 13.902 1.293 13.707C1.098 13.512 1 13.276 1 13L1 10C1 9.724 1.098 9.488 1.293 9.293C1.488 9.098 1.724 9 2 9L14 9C14.276 9 14.512 9.098 14.707 9.293C14.902 9.488 15 9.724 15 10L15 13C15 13.276 14.902 13.512 14.707 13.707C14.512 13.902 14.276 14 14 14ZM14 13L14 10L2 10L2 13L14 13ZM4.5 11C4.641 11 4.759 11.048 4.856 11.144C4.952 11.241 5 11.359 5 11.5C5 11.641 4.952 11.759 4.856 11.856C4.759 11.952 4.641 12 4.5 12L3.5 12C3.359 12 3.241 11.952 3.144 11.856C3.048 11.759 3 11.641 3 11.5C3 11.359 3.048 11.241 3.144 11.144C3.241 11.048 3.359 11 3.5 11L4.5 11Z"/>
</vector>
```

### Flutter

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

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

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

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

  @override
  void paint(Canvas canvas, Size size) {
    canvas.scale(size.width / 16, size.height / 16);
    final p = Path()
      ..moveTo(14.707, 2.293)
      ..cubicTo(14.902, 2.488, 15, 2.724, 15, 3)
      ..lineTo(15, 6)
      ..cubicTo(15, 6.276, 14.902, 6.512, 14.707, 6.707)
      ..cubicTo(14.512, 6.902, 14.276, 7, 14, 7)
      ..lineTo(2, 7)
      ..cubicTo(1.724, 7, 1.488, 6.902, 1.293, 6.707)
      ..cubicTo(1.098, 6.512, 1, 6.276, 1, 6)
      ..lineTo(1, 3)
      ..cubicTo(1, 2.724, 1.098, 2.488, 1.293, 2.293)
      ..cubicTo(1.488, 2.098, 1.724, 2, 2, 2)
      ..lineTo(14, 2)
      ..cubicTo(14.276, 2, 14.512, 2.098, 14.707, 2.293)
      ..close()
      ..moveTo(2, 6)
      ..lineTo(14, 6)
      ..lineTo(14, 3)
      ..lineTo(2, 3)
      ..lineTo(2, 6)
      ..close()
      ..moveTo(4.5, 4)
      ..cubicTo(4.641, 4, 4.759, 4.048, 4.856, 4.144)
      ..cubicTo(4.952, 4.241, 5, 4.359, 5, 4.5)
      ..cubicTo(5, 4.641, 4.952, 4.759, 4.856, 4.856)
      ..cubicTo(4.759, 4.952, 4.641, 5, 4.5, 5)
      ..lineTo(3.5, 5)
      ..cubicTo(3.359, 5, 3.241, 4.952, 3.144, 4.856)
      ..cubicTo(3.048, 4.759, 3, 4.641, 3, 4.5)
      ..cubicTo(3, 4.359, 3.048, 4.241, 3.144, 4.144)
      ..cubicTo(3.241, 4.048, 3.359, 4, 3.5, 4)
      ..lineTo(4.5, 4)
      ..close()
      ..moveTo(14, 14)
      ..lineTo(2, 14)
      ..cubicTo(1.724, 14, 1.488, 13.902, 1.293, 13.707)
      ..cubicTo(1.098, 13.512, 1, 13.276, 1, 13)
      ..lineTo(1, 10)
      ..cubicTo(1, 9.724, 1.098, 9.488, 1.293, 9.293)
      ..cubicTo(1.488, 9.098, 1.724, 9, 2, 9)
      ..lineTo(14, 9)
      ..cubicTo(14.276, 9, 14.512, 9.098, 14.707, 9.293)
      ..cubicTo(14.902, 9.488, 15, 9.724, 15, 10)
      ..lineTo(15, 13)
      ..cubicTo(15, 13.276, 14.902, 13.512, 14.707, 13.707)
      ..cubicTo(14.512, 13.902, 14.276, 14, 14, 14)
      ..close()
      ..moveTo(14, 13)
      ..lineTo(14, 10)
      ..lineTo(2, 10)
      ..lineTo(2, 13)
      ..lineTo(14, 13)
      ..close()
      ..moveTo(4.5, 11)
      ..cubicTo(4.641, 11, 4.759, 11.048, 4.856, 11.144)
      ..cubicTo(4.952, 11.241, 5, 11.359, 5, 11.5)
      ..cubicTo(5, 11.641, 4.952, 11.759, 4.856, 11.856)
      ..cubicTo(4.759, 11.952, 4.641, 12, 4.5, 12)
      ..lineTo(3.5, 12)
      ..cubicTo(3.359, 12, 3.241, 11.952, 3.144, 11.856)
      ..cubicTo(3.048, 11.759, 3, 11.641, 3, 11.5)
      ..cubicTo(3, 11.359, 3.048, 11.241, 3.144, 11.144)
      ..cubicTo(3.241, 11.048, 3.359, 11, 3.5, 11)
      ..lineTo(4.5, 11)
      ..close();
    canvas.drawPath(p, Paint()..color = color);
  }

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