diff --git a/ivette/src/frama-c/kernel/ASTinfo.tsx b/ivette/src/frama-c/kernel/ASTinfo.tsx
index 4db1300e6262d71d0729d7b0ca0c99c5ab9ceea7..8eeff601e8c0a51ecd5b6460654bccddf4ce9e49 100644
--- a/ivette/src/frama-c/kernel/ASTinfo.tsx
+++ b/ivette/src/frama-c/kernel/ASTinfo.tsx
@@ -318,6 +318,10 @@ export default function ASTinfo(): JSX.Element {
     States.MetaSelection.on(pinMarker);
     return () => States.MetaSelection.off(pinMarker);
   }, [pinMarker]);
+  const scrollTarget = React.useRef<HTMLInputElement>(null);
+  React.useEffect(() => {
+    scrollTarget.current?.scrollIntoView({ block: 'nearest' });
+  });
   // Rendering
   const renderMark = (mark: Mark): JSX.Element | null => {
     const { marker } = mark;
@@ -331,7 +335,8 @@ export default function ASTinfo(): JSX.Element {
     const onSelect = () => void States.setSelection(mark);
     const onHover =
       (h: boolean): void => States.setHovered(h ? mark : undefined);
-    return (
+    const ref = isHovered ? scrollTarget : undefined;
+    const markInfo =
       <MarkInfos
         key={marker}
         marker={marker}
@@ -344,8 +349,8 @@ export default function ASTinfo(): JSX.Element {
         onRemove={onRemove}
         onHover={onHover}
         onSelect={onSelect}
-      />
-    );
+      />;
+    return <div ref={ref}>{markInfo}</div>;
   };
   return (
     <>