How lengthy do users remain on webpages?

How lengthy do users remain on webpages? will need to

Summary: Users frequently leave Webpages in 10–20 seconds, but pages having a obvious value proposition holds people’s attention a lot longer. To achieve several minutes of user attention, you have to clearly communicate your value proposition within ten seconds.

How lengthy will users remain on an internet page before departing? It is a perennial question, the answer happens to be exactly the same:

  • Not so lengthy.

The typical page visit lasts just a little under one minute.

As users hurry through webpages, they’ve time for you to read merely a quarter from the text around the pages they really visit (not to mention all individuals they do not). So, unless of course your writing is extraordinarily obvious and focused, little of the items you say in your website will reach out to customers.

However, while users will always be in a rush on the internet, time they invest in individual page visits varies broadly: sometimes people bounce away immediately, other occasions they linger for a lot more than one minute. With all this, the typical isn’t the most fruitful method of analyzing user behaviors. Users are people — their behaviors are highly variable and aren’t taken fully with a single number.

Departing Webpages: The Weibull Hazard Function

Research by Chao Liu and colleagues from Microsoft Research now supplies a mathematical knowledge of users’ page-departing behaviors. The scientists collected data from “a well known internet browser plug-in,” analyzing page-visit durations for 205,873 different webpages that they’d taken up to 10,000 visits. The reality is: this option crunched lots of data (greater than 2 billion dwell occasions).

  • The end result: time users invest in an internet page follows a Weibull distribution.

99.9% of readers will ask: What is a Weibull distribution?

Weibull is really a reliability-engineering concept that’s accustomed to evaluate time-to-failure for components. The model’s hazard function signifies the probability that the component will fail sometimes t, considering that it’s labored fine up to time t.

So, after replacing an extra part in a device, Weibull analysis predicts when you will need to change it again. Additionally, it enables you to conduct risk analysis beyond simplistic mean-time for you to failure. And, should you own lots of equipment, you should use aggregate analysis to, say, manage your spares inventory.

Obviously, when analyzing Web visits, we just replace “component failure” with “user departing the page.” Within their research paper, Liu and colleagues provide intensive record analysis to exhibit the Weibull model carefully matches users’ empirically observed behavior.

Based on earlier research, there’s two different types of Weibull distributions:

  • Positive aging: The more the component has been around service, the much more likely it’s to fail. Quite simply, the hazard function increases for bigger values of t. This will make intuitive sense, since the longer stuff can be used, the greater it wears lower. Thus, something that’s been being used for any lengthy time is going to be approaching its breaking point.
  • Negative aging: The more the component has been around service, the not as likely it’s to fail. Here, the hazard function decreases for bigger values of t. This will make sense when individual components vary in quality: of poor quality components usually fail early, so anything that’s been operating for any lengthy time will probably be particularly robust and can usually survive a lot longer.

Negative Aging: Leave Quick or Stay Lengthy

They discovered that 99% of webpages possess a negative aging effect. In human–computer interaction (HCI) research, it’s very rare to obtain this strong a finding, and Liu and colleagues ought to be credited with finding a significant new insight.

Why negative aging? Because webpages truly are of highly variable quality. Users know this and spend their initial time on the page in callous triage to abandon the dross As soon as possible. It’s rare that people linger on webpages, however when users plan that the page is efficacious, they might stay for any bit.

The next chart shows the hazard function — that’s, the probability of departing — for that median Weibull parameters fitted over the scientists’ huge dataset:



It’s obvious in the chart the first ten seconds from the page visit are critical for users’ decision to remain or leave. The prospect of departing is extremely high over these first couple of seconds because users are very skeptical, getting endured numerous poorly designed webpages previously. People realize that most webpages are useless, plus they behave accordingly to save lots of additional time than essential on bad pages.

If the site survives this primary — very harsh — 10-second judgment, users will appear around a little. However, they are still highly prone to leave throughout the subsequent 20 seconds of the visit. Once individuals have remained on the page for around thirty seconds will the curve become relatively flat. People still leave every second, but in a much slower rate than throughout the first thirty seconds.

So, if you’re able to convince users to remain in your page for 30 seconds, there is a fair chance that they may stay considerably longer — frequently 2 minutes or even more, that is a very long time on the internet.

So, roughly speaking, there’s two cases here:

  • bad pages, which gets the chop inside a couple of seconds and
  • good pages, which can be allotted a couple of minutes.

Note: “good” versus. “bad” is really a decision that every individual user makes within individuals first couple of seconds of coming. The look implications are obvious:

  • To achieve several minutes of user attention, you have to clearly communicate your value proposition within ten seconds.

Chao Liu, Ryen W. White-colored, and Susan Dumais. 2010. Understanding web surfing behaviors through Weibull analysis of dwell time. In Proceedings from the 33rd worldwide ACM SIGIR conference on Development and research in information retrieval (SIGIR ’10)

Optimize for Return Visits, Not Bounce Rate

Related Content Boosts Pageviews, When Done Correctly

Why Site Vacationers are Useless


Share this short article: Twitter LinkedIn Google+ Email


PHP5 Auto Session Timeout. Learn How to? (English)


Watch TV: here I request another Video\nLike a session expires on no activity for 5 minutes like on bank sites.\nhow do they do that ?

Watch TV: Assad Brother please spare some time to making a video on $_SERVER in PHP briefed. That would be really appreciated. You are doing really great work

Tim Curtin: Hi Assad, I cannot get the SESSION duration code to work. One ting I noticed is that u are placing that PHP inside of the <BODY> tag which is forbidden due to the fact you CANNOT make calles to write to the header via header('Location: somepage.php?status=notworking'); as you will, as I do, get a warning / error that says you cannot write to the header as it has already occured. Here is the link to my BlueHost site where I have the test project using a MySQL database. I set up a guest user called "guest" with password of "guest1234!"\n\nGo to which is the login page. it will redirect the user to pwlist.php if successful. use 'tcurtin' as the login name on the page with a password of '1234'. I am also attaching the code for index.php AND pwlist.php below at the bottome. Will use a large line of dashes to separate the two file. Also, I am processing "in-page' for the form. No Auth.php or anything like that.\n\nCODE FOR index.php\n========================================================================\n<?php\n //// — FILE: index.php — ////\n\n\n // START A SESSION\n session_start();\n\n // SET'S THE TIME-ZONE FOR THE SERVER\n // NOTE: MIGHT WANT TO CONSIDER CAPTURING THE REMOTE USER'S TIME-ZONE\n // AND STORING IT IN A SESSION OR VAR\n\n date_default_timezone_set('US/Eastern');\n \n // CAPTURES THE INCOME $_GET REQUEST WITH 'STATUS' AND 'FIRST NAME OF USER'\n // FROM THE VALIDATED USER LOG-IN\n\n $status = $_GET['status'];\n $statusMad = $_GET['statusMsg'];\n\n /* ==================================================================== */\n // CHECK TO SEE IF THE SUBMIT BUTTON WAS CLICKED\n\n if (isset($_POST["submit"])) {\n // SET VARIABLES\n\n $fname = "";\n $lname = "";\n $email = "";\n\n $dbhost = "localhost";\n $dbuser = "synnovat_guest";\n $dbpswd = "guest1234!";\n $dbname = "synnovat_pwdkeep";\n $dbconn = "";\n\n if (isset($_POST["userID"]) && (isset($_POST["pswd"]))) {\n $userID = $_POST["userID"];\n $pswd = $_POST["pswd"];\n \n // CONNECT TO THE DATABASE\n $dbconn = mysqli_connect($dbhost, $dbuser, $dbpswd, $dbname);\n \n // VERIFY CONNECTION TO DB WAS SUCCESSFUL\n if (mysqli_connect_errno()) {\n $msg = "Failed to conect to DB!";\n $returnVal = array ( 0, $msg);\n die("Failed to connect to DB!!!<br>");\n }\n else {\n $msg = "Connection to DB was successful.";\n $returnVal = array( 1, $msg);\n }\n\n // BUILD QUERY STRING TO SEARCH FOR USER\n $query = "SELECT * FROM user ";\n $query .= "WHERE userID = '{$userID}' AND pswd = '{$pswd}';";\n\n // echo "QUERY: " . "<br>" . $query . "<hr>";\n\n // SEND THE QUERY TO THE DATABASE\n $select = mysqli_query($dbconn, $query);\n \n if ((isset($select)) && mysqli_affected_rows($dbconn) > 0) {\n // echo "FOUND A MATCH AT LOG-IN" . "<hr>";\n $row = mysqli_fetch_assoc($select); \n if ($userID == $row['userID'] && $pswd == $row['pswd']) {\n // echo "USER-ID: " . $row['userID'] . " – PSWD: " . $row['pswd'] . "<hr>";\n $currentDate = date('l, mm/dd/yyyy');\n\n $_SESSION['loggedIn'] = array(\n "loginDate" => $currentDate,\n "startTime" => time(),\n "duration" => 20,\n "firstName" => $row['fname']\n );\n // REDIRECT USER TO PWLIST PAGE AFTER SUCCESSFUL LOGIN\n header("Location: pwlist.php?status=validUser&statusMsg=Welcome {$firstName}&loginDate={$loginDate}&startTime={$startTime}&duration={$duration}&firstName={$firstName}");\n \n }\n \n }\n else {\n $msg = "Login Failed: Incorrect user-id or password combination";\n }\n }\n else {\n $msg = "No such user found…";\n }\n \n \n\n }\n else {\n $userID = "";\n $pswd = "";\n $msg = "Please log-in with a valid User ID & Password.<br>";\n }\n\n\n\n?>\n\n<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 5.0 Transitional//EN"\n "">\n\n\n<html>\n \n <head>\n \n <title>Password Keeper</title>\n <meta charset="utf-8">\n <link rel="stylesheet" type="text/css" href="_css/pwdstyles.css">\n \n <style>\n\n \n </style>\n\n </head>\n\n <body>\n\n <header>\n\n <div id="headerImage">\n \n </div>\n <div id="headerTitle">\n <p>Password Keeper</p>\n </div>\n \n </header>\n\n <section>\n\n <div id="sectionLogin"> \n <form action="" method="POST">\n <output id="msgLine"><?php echo "Msg: " . $msg; ?></output><br><br> \n User ID: &nbsp; <input type="text" name="userID" id="userID" autofocus="userID" required"> \n &nbsp; &nbsp; Password: &nbsp; <input type="Password" name="pswd" id="pswd" required"><br><br>\n Forgot your login info? &nbsp; <a href="">Click here</a><br><hr><br>\n Don't have an account? Create one <a href=""> NOW!</a><br><br>\n <input type="submit" name="submit" id="submit"><br>\n </form>\n </div>\n <div id="sectionSignup">\n \n </div>\n\n\n \n </section>\n\n <footer>\n \n </footer>\n\n \n\n\n \n </body>\n\n</html>\n\n========================================================================\nCODE FOR pwlist.php is below the next line… Thanks Assad in advance.\n=============================================================================\n<?php\n\n //// — FILE: PWLIST.PHP.php — ////\n \n\n // START THE SESSION\n session_start();\n \n // CAPTURES THE INCOME $_GET REQUEST WITH 'STATUS' AND 'FIRST NAME OF USER'\n // FROM THE VALIDATED USER LOG-IN\n\n $status = $_GET['status'];\n $statusMad = $_GET['msg'];\n $loginDate = $_GET['loginDate'];\n $startTime = $_GET['startTime'];\n $duration = $_GET['duration'];\n $firstName = $_GET['firstName'];\n\n if(isset($_POST['logout'])) {\n session_destroy();\n header('Location: index.php?status=logout&msg=Session appears to have expired. Please login.');\n }\n\n\n // CHECK TO SEE IF AUTHORIZED USER IS LOGGED\n \n if(!isset($_SESSION['loggedIn'])) {\n if ((time() – $startTime) > $duration) {\n $_SESSION['redirectURL'] = $_SERVER['REQUEST_URI'];\n unset($_SESSION['loggedIn']['loginDate']);\n unset($_SESSION['loggedIn']['startTime']);\n unset($_SESSION['loggedIn']['duration']);\n unset($_SESSION['loggedIn']['firstName']);\n unset($_SESSION['loggedIn']); \n\n header('Location: index.php?status=sessionExpired&statusMsg=Session has expired. Please log-in.'); \n }\n else {\n // NOW WRITE OUT DATE, TIME, DURATION AND FIRST NAME FROM GET\n }\n\n }\n\n \n?>\n \n\n<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 5.0 Transitional//EN"\n "">\n\n\n<html>\n \n <head>\n \n <title>PWD List</title>\n <meta charset="utf-8">\n <link rel="stylesheet" type="text/css" href="_css/pwdstyles.css">\n \n <style>\n\n \n </style>\n\n </head>\n\n <body>\n <?php\n\n ?>\n\n <header>\n\n <div id="headerImage">\n \n </div>\n <div id="headerTitle">\n <p>MY PASSWORDS LIST</p>\n </div>\n \n </header>\n\n <section>\n <div id=msgLine><?php echo $statusMsg ?></div>\n <div id=content>\n <?php echo $loginDate . "<br>" ?>;\n <?php echo $startTime . "<br>" ?>;\n <?php echo $duration . "<br>" ?>;\n <?php echo $firstName . "<hr>" ?>;\n </div>\n <div id="sectionLogin"> \n <form action="" method="POST">\n <input type="submit" name="logout">\n </form>\n </div>\n <div id="sectionSignup">\n \n </div>\n\n\n \n </section>\n\n <footer>\n \n </footer>\n\n \n\n\n \n </body>\n\n</html>

Tim Curtin: Hello Assad, I am not quite finished viewing this tutorial, but saw at the bottom of the view swindow some sort of Editing software ou are using and is positioned below the browser window. What is that software? I like how it adjusts the CSS layout of the PHP page as ou are writing the values in the editor. Please tell me, what is the editor software and where can I obtain it too? Thanks\n\nThanks. Tim

Salem Othman: well done Mr. AssadUllahCh

sabir kamran: nice sir

afridi Khan: Nice, but could you manage it like facebook when one logout even the tabs opened of the same user also goes out and login page appears without refreshing. Thnks

Arshad Hussain: good tutorial, but i suggest you that whenever you write a single line of code show the result in front end.\nWhat you have done is that you created all codes once and then you run the program that is not a good approach to teach.\n\nWell, i like your video. keep on