# Iframe embed

The fastest way to place a form on a page: a single `<iframe>` element, no JavaScript required. Use it when you need a static, inline form and don't need pop-ups, alternate layouts, or prefilled data.

## The embed code

```html
<iframe id="" allowtransparency="true" allowfullscreen="true" allow="geolocation; microphone; camera" src="https://eu.forms.app/form/69d4bd130b443bda40c8f65a" frameborder="0" style="width: 100vw; min-width:100%; height:600px; border:none;"></iframe>
```

Copy your own version of this snippet from the form's **Share** page in forms.app: choose **Embed → Iframe**, then **Get the code**. The `src` URL already contains your form ID and account domain, so paste it as-is.

## Attribute reference

| Attribute | Purpose |
|  --- | --- |
| `id` | Optional identifier you can set to target the iframe from your own CSS or JavaScript. |
| `allowtransparency` | Lets the form's background render transparently over your page's background. |
| `allowfullscreen` | Lets embedded content request full-screen mode, needed by some field types such as drawing & signature. |
| `allow="geolocation; microphone; camera"` | Grants the browser permissions the form may need for location, audio, or camera-based fields. Remove any you don't use. |
| `src` | The form's public embed URL, including your form ID and account domain. |
| `frameborder` | Legacy attribute kept for older browser support; the border is also removed via `style`. |
| `style` (`width`, `min-width`, `height`) | Sizing. `width: 100vw; min-width: 100%` makes the iframe fill its container's width; `height` is a fixed pixel value. |


## Sizing the iframe

An iframe has a fixed `height`. If the form is long, uses conditional logic, or is multi-step, a fixed height can crop content or add an inner scrollbar. Options:

- Increase the `height` value to fit your tallest expected content.
- Switch to the [script embed](/embeds/script-embed), which supports `'height':'formHeight'` for automatic resizing.


## Permissions

The `allow` attribute controls which browser permissions the form is allowed to request. Match it to the field types your form actually uses:

| Field type | Required permission |
|  --- | --- |
| Address (with location lookup) | `geolocation` |
| Audio recording fields | `microphone` |
| Image upload / camera capture | `camera` |


Omitting a permission the form needs causes the browser to silently block that feature inside the iframe.

## What's next

- [Script embed](/embeds/script-embed) for pop-ups, side tabs, auto-resizing height, and prefilled data.
- [Passing data to your form](/embeds/passing-form-data).
- [Examples](/embeds/examples) for React, Next.js, Vue, and Kotlin.