diff --git a/src/main.rs b/src/main.rs
index 17d556c..ebc1957 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -25,6 +25,8 @@ struct Cli{
 	cookie_env:Option<String>,
 	#[arg(long)]
 	cookie_file:Option<std::path::PathBuf>,
+	#[arg(long)]
+	start_version:Option<u64>,
 
 	//decompile options
 	#[arg(long)]
@@ -134,6 +136,7 @@ async fn main()->AResult<()>{
 
 	match cli.command{
 		Commands::DownloadHistory=>download_history(DownloadHistoryConfig{
+			start_version:cli.start_version.unwrap_or(0),
 			output_folder:cli.output.unwrap(),
 			cookie:cookie.unwrap(),
 			asset_id:cli.asset_id.unwrap(),
@@ -348,6 +351,7 @@ async fn download_asset_version(client:&reqwest::Client,cookie:&str,asset_id_str
 }
 
 struct DownloadHistoryConfig{
+	start_version:u64,
 	output_folder:std::path::PathBuf,
 	cookie:String,
 	asset_id:AssetID,
@@ -364,8 +368,13 @@ async fn download_history(config:DownloadHistoryConfig)->AResult<()>{
 	let mut join_handles=Vec::new();
 	loop{
 		let mut page=download_page(&client,config.cookie.as_str(),config.asset_id,cursor).await?;
+		let mut cancel_paging=false;
 		for asset_version in &page.data{
 			let version_number=asset_version.assetVersionNumber;
+			if version_number<config.start_version{
+				cancel_paging=true;
+				continue;//don't trust roblox returned order
+			}
 			let client=client.clone();
 			let cookie=config.cookie.clone();
 			let asset_id_str=asset_id_string.clone();
@@ -386,7 +395,7 @@ async fn download_history(config:DownloadHistoryConfig)->AResult<()>{
 			}));
 		}
 		asset_list.append(&mut page.data);
-		if page.nextPageCursor.is_none(){
+		if page.nextPageCursor.is_none()||cancel_paging{
 			break;
 		}
 		cursor=page.nextPageCursor;