diff --git a/src/elements/graphviz.rs b/src/elements/graphviz.rs
index 9ecb080..6af8b1a 100644
--- a/src/elements/graphviz.rs
+++ b/src/elements/graphviz.rs
@@ -38,6 +38,7 @@ struct Graphviz {
 	pub location: Token,
 	pub dot: String,
 	pub layout: Layout,
+	pub width: String,
 	pub caption: Option<String>,
 }
 
@@ -66,9 +67,13 @@ impl Graphviz {
 		) {
 			Ok(svg) => {
 				let out = String::from_utf8_lossy(svg.as_slice());
-				let split_at = out.find("<!-- Generated").unwrap(); // Remove svg header
+				let svg_start = out.find("<svg").unwrap(); // Remove svg header
+				let split_at = out.split_at(svg_start).1.find('\n').unwrap();
 
-				out.split_at(split_at).1.to_string()
+				let mut result = format!("<svg width=\"{}\"", self.width);
+				result.push_str(out.split_at(svg_start+split_at).1);
+
+				result
 			}
 			Err(e) => return Err(format!("Unable to execute dot: {e}")),
 		};
@@ -161,6 +166,14 @@ impl GraphRule {
 				Some("dot".to_string()),
 			),
 		);
+		props.insert(
+			"width".to_string(),
+			Property::new(
+				true,
+				"SVG width".to_string(),
+				Some("100%".to_string()),
+			),
+		);
 		Self {
 			re: [Regex::new(
 				r"\[graph\](?:\[((?:\\.|[^\[\]\\])*?)\])?(?:((?:\\.|[^\\\\])*?)\[/graph\])?",
@@ -314,6 +327,36 @@ impl RegexRule for GraphRule {
 			},
 		};
 
+		// FIXME: You can escape html, make sure we escape single "
+		// Property "width"
+		let graph_width = match properties.get("width", |_, value| -> Result<String, ()> {
+			Ok(value.clone())
+		}) {
+			Ok((_, kind)) => kind,
+			Err(e) => match e {
+				PropertyMapError::NotFoundError(err) => {
+					reports.push(
+						Report::build(ReportKind::Error, token.source(), token.start())
+							.with_message("Invalid Graph Property")
+							.with_label(
+								Label::new((
+									token.source().clone(),
+									token.start() + 1..token.end(),
+								))
+								.with_message(format!(
+									"Property `{}` is missing",
+									err.fg(parser.colors().info)
+								))
+								.with_color(parser.colors().warning),
+							)
+							.finish(),
+					);
+					return reports;
+				}
+				_ => panic!("Unknown error")
+			},
+		};
+
 		// TODO: Caption
 
 		parser.push(
@@ -322,6 +365,7 @@ impl RegexRule for GraphRule {
 				location: token,
 				dot: graph_content,
 				layout: graph_layout,
+				width: graph_width,
 				caption: None,
 			}),
 		);