A method, implemented by a processing device, comprising: receiving, by the processing device in a user device, a first plurality of portions of a stream of content being streamed from a content sharing service to the user device for playback by a media player at the user device; receiving, by the processing device, a request from a user to make the stream of content available for offline playback at the user device, wherein the request is received while the stream of content is being streamed from the content sharing service to the user device and during playback of the stream of content by the media player, wherein the first plurality of portions is streamed from the content sharing service to the user device prior to receipt of the request to make the stream of content available for offline playback, and wherein the first plurality of portions was not stored for offline playback at the user device prior to receipt of the request to make the stream of content available for offline playback; in response to receiving the request, storing, by the processing device, a second plurality of portions of the stream of content at the user device as the second plurality of portions is being streamed from the content sharing service to the user device for playback by the media player, and requesting, by the processing device, the first plurality of portions from the content sharing service; receiving, by the processing device, the requested first plurality of portions from the content sharing service; storing, by the processing device, the received requested first plurality of portions at the user device, wherein the received requested first plurality of portions and the second plurality of portions are made available for offline playback at the user device; identifying a low-quality portion of the first plurality of portions or the stored second plurality of portions as having a low quality based on a manifest file of the stream of content including a list of universal resource locators, hereinafter referred to as URLs, of content portions of various quality; in response to identifying the low-quality portion as having the low quality, requesting from the content sharing service a replacement portion of the stream of content for the low-quality portion that is of a higher quality than the low-quality portion using the URL of the replacement portion from the manifest file; receiving the replacement portion from the content sharing service; storing the replacement portion at the user device, wherein the replacement portion replaces the low-quality portion; and causing the stream of content to be available for offline playback at the user device with the replacement portion. receiving, by the processing device in a user device, a first plurality of portions of a stream of content being streamed from a content sharing service to the user device for playback by a media player at the user device; receiving, by the processing device, a request from a user to make the stream of content available for offline playback at the user device, wherein the request is received while the stream of content is being streamed from the content sharing service to the user device and during playback of the stream of content by the media player, wherein the first plurality of portions is streamed from the content sharing service to the user device prior to receipt of the request to make the stream of content available for offline playback, and wherein the first plurality of portions was not stored for offline playback at the user device prior to receipt of the request to make the stream of content available for offline playback; in response to receiving the request, storing, by the processing device, a second plurality of portions of the stream of content at the user device as the second plurality of portions is being streamed from the content sharing service to the user device for playback by the media player, and requesting, by the processing device, the first plurality of portions from the content sharing service; receiving, by the processing device, the requested first plurality of portions from the content sharing service; storing, by the processing device, the received requested first plurality of portions at the user device, wherein the received requested first plurality of portions and the second plurality of portions are made available for offline playback at the user device; identifying a low-quality portion of the first plurality of portions or the stored second plurality of portions as having a low quality based on a manifest file of the stream of content including a list of universal resource locators, hereinafter referred to as URLs, of content portions of various quality; in response to identifying the low-quality portion as having the low quality, requesting from the content sharing service a replacement portion of the stream of content for the low-quality portion that is of a higher quality than the low-quality portion using the URL of the replacement portion from the manifest file; receiving the replacement portion from the content sharing service; storing the replacement portion at the user device, wherein the replacement portion replaces the low-quality portion; and causing the stream of content to be available for offline playback at the user device with the replacement portion.