WP_Query returns posts_per_page + 1 every time

I’ve seen this happen when you have sticky posts. Try excluding them, like this:

<?php
      $query = new WP_Query([
          'post_status' => 'publish',
          'orderby' => 'date',
          'order' => 'DESC',
          'posts_per_page' => 4,
          'ignore_sticky_posts' => true,
    ]);
?>

techhipbettruvabetnorabahisbahis forumuedusedusedusedueduedueduedueduedu