A method for filtering a stream of content from one or more processors to a user device, said one or more processors being communicatively coupled with the user device via a communication network, the method comprising: receiving, with one or more processors via the network, a request for a stream of content from a user device; calculating, with the one or more processors, a viewing time for each post in the stream of content; determining, with the one or more processors, an available time for the user; determining, with the one or more processors, one or more posts from the stream of content to provide to the user device based on the available time for the user and the viewing time for each post in the stream of content; and providing via the network the one or more posts to the user device; the method further comprising: receiving user engagement data describing the user's engagement with the one or more posts; determining, based on the user engagement data, a format that the user prefers for viewing posts; calculating an updated viewing time for each post in the stream of content, wherein the updated viewing time for each post is calculated taking into account the user's preferred format; receiving a further request from the user device for one or more posts in the stream of content: determining, with the one or more processors, a time that is available to the user at the time of sending the further request; determining, with the one or more processors, one or more further posts from the stream of content to provide to the user device based on the time that is available to the user at the time of sending the further request and the updated viewing time for each post; and providing, via the network, the one or more further posts to the user device in the preferred format. receiving, with one or more processors via the network, a request for a stream of content from a user device; calculating, with the one or more processors, a viewing time for each post in the stream of content; determining, with the one or more processors, an available time for the user; determining, with the one or more processors, one or more posts from the stream of content to provide to the user device based on the available time for the user and the viewing time for each post in the stream of content; and providing via the network the one or more posts to the user device; receiving user engagement data describing the user's engagement with the one or more posts; determining, based on the user engagement data, a format that the user prefers for viewing posts; calculating an updated viewing time for each post in the stream of content, wherein the updated viewing time for each post is calculated taking into account the user's preferred format; receiving a further request from the user device for one or more posts in the stream of content: determining, with the one or more processors, a time that is available to the user at the time of sending the further request; determining, with the one or more processors, one or more further posts from the stream of content to provide to the user device based on the time that is available to the user at the time of sending the further request and the updated viewing time for each post; and providing, via the network, the one or more further posts to the user device in the preferred format. determining, with the one or more processors, a time that is available to the user at the time of sending the further request; determining, with the one or more processors, one or more further posts from the stream of content to provide to the user device based on the time that is available to the user at the time of sending the further request and the updated viewing time for each post; and providing, via the network, the one or more further posts to the user device in the preferred format.